sql查询一条记录 多个字段 对应另一个表一个字段的查询语句如何写

查询样例数据和目标数据如下图 麻烦帮忙写下

CREATE TABLE tb1
( 航班号 VARCHAR(20),
起飞时间 VARCHAR(20),
降落世间 VARCHAR(20),
航站1 VARCHAR(20),
航站2 VARCHAR(20),
航站3 VARCHAR(20)

INSERT INTO  tb1 VALUES ('CZ1508','1121','1322','CGQ','SHE','PEK');
INSERT INTO  tb1 VALUES ('CZ1605','1233','1544','CGQ','PEK','CGO');
CREATE TABLE tb2
(
航站代码 VARCHAR(20),
航站中文名称 VARCHAR(20),
航站英文名称 VARCHAR(20),
)
INSERT INTO  tb2 VALUES ('CGQ','长春','changchun');
INSERT INTO  tb2 VALUES ('SHE','沈阳','shenyang');
INSERT INTO  tb2 VALUES ('PEK','北京','beijing');
INSERT INTO  tb2 VALUES ('CGO','郑州','zhengzhou');
SELECT a.航班号,b.航站中文名称 AS 航站1中文名称,b.航站英文名称 AS 航站1英文名字,
c.航站中文名称 AS 航站2中文名称,c.航站英文名称 AS 航站2英文名字,
d.航站中文名称 AS 航站2中文名称,d.航站英文名称 AS 航站2英文名字
 FROM tb1 a LEFT JOIN tb2 b ON a.航站1=b.航站代码 
LEFT JOIN  TB2 c ON a.航站2=c.航站代码 LEFT JOIN TB2 d ON a.航站3=d.航站代码

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-05-10
给个例子,可能还可以优化,
其实这种复杂逻辑最好不要用sql去做,而是sql只是取出数据,逻辑在代码层做。
SELECT
t.航班号, t1.中文名, t1.英文名, t2.中文名, t2.英文名, t3.中文名, t3.英文名
FROM
表1 t,
(select 表1.航班号, 表2.中文名, 表2.英文名 from 表1, 表2 where 表1.航站1 = 表2.航站代码) t1,
(select 表1.航班号, 表2.中文名, 表2.英文名 from 表1, 表2 where 表1.航站2 = 表2.航站代码) t2,
(select 表1.航班号, 表2.中文名, 表2.英文名 from 表1, 表2 where 表1.航站3 = 表2.航站代码) t3
WHERE
t.航班号 = t1.航班号 and t.航班号 = t2.航班号 and t.航班号 = t3.航班号

本回答被网友采纳
第2个回答  2018-05-10
select 航班号,
T1.航站中文名 as 航站1中文名,T1.航站中文名 as 航站1英文名,
T2.航站中文名 as 航站2中文名,T2.航站中文名 as 航站2英文名,
T3.航站中文名 as 航站3中文名,T3.航站中文名 as 航站3英文名
from 表1 T,表2 T1,表2 T2, 表2 T3
where
T.航站1 = T1.航站代码
and T.航站2 = T2.航站代码
and T.航站3 = T3.航站代码
第3个回答  2018-05-10
SELECT a.航班号,
b.航站中文名 as 航站1中文名,b.航站英文名 as 航站1英文名,
c.航站中文名 as 航站2中文名,c.航站英文名 as 航站2英文名,
d.航站中文名 as 航站3中文名,d.航站英文名 as 航站3英文名
FROM TEST.表1 a join TEST.表2 b
on a.航站1=b.航站代码 join TEST.表2 c
on a.航班2=c.航站代码 join TEST.表2 d
on a.航站3=d.航站代码
(多表查询肯定没错,但有点繁琐,凑合着用吧~)
第4个回答  2018-05-10
代码里面处理吧,不然要写3个链接查询,影响数据库查询效率
相似回答