5个回答
展开全部
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.航站代码
推荐于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.航班号
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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.航站代码
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.航站代码
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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.航站代码
(多表查询肯定没错,但有点繁琐,凑合着用吧~)
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.航站代码
(多表查询肯定没错,但有点繁琐,凑合着用吧~)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
代码里面处理吧,不然要写3个链接查询,影响数据库查询效率
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询