复杂的sql连接查询
Posted
技术标签:
【中文标题】复杂的sql连接查询【英文标题】:complicate sql join query 【发布时间】:2014-03-14 23:06:20 【问题描述】:我需要合并 2 个表格并显示一个表格。
我已经用 php 做了,但我想用 SQL 本身做。
表 1:venki
code subject
10 english
11 tamil
12 history
表 2:venki2
num opt1 opt2 opt3 allot
f41 12 11 10 12
我需要显示一个包含num.venki2
、opt1
、opt2
、opt3
、allot
列的表格(5 列)。最后 4 列的值必须取自表 1,例如: f41 ,历史。泰米尔语,英语,历史。
【问题讨论】:
加入表需要一些参考键,那么你在两个表之间的参考键是什么? 【参考方案1】:SELECT t2.num
,J1.[Subject] AS Opt1
,J2.[Subject] AS Opt2
,J3.[Subject] AS Opt3
,J4.[Subject] AS allot
FROM venki2 t2 LEFT JOIN venki J1
ON t2.opt1 = J1.Code
LEFT JOIN venki J2
ON t2.opt2 = J2.Code
LEFT JOIN venki J3
ON t2.opt3 = J3.Code
LEFT JOIN venki J4
ON t2.allot = J4.Code
在主题周围使用方括号,因为它是 sql server 中的key word
。
Working SQL FIDDLE
【讨论】:
【参考方案2】:select venky2.num, TBLOPT1.[subject],
TBLOPT2.[subject], TBLOP3.[subject],
TBLALLOT.[subject]
from venky2, venky as TBLOPT1, venky as TBLOPT2, venky as TBLOP3, venky as TBLALLOT
left join TBLOPT1 on venky2.opt1=TBLOPT1.code
left join TBLOPT2 on venky.opt2=TBLOPT2.code
left join TBLOP3 on venky2.opt3=TBLOP3.code
left join TBLALLOT on venky2.allot=TBLALLOT.code
【讨论】:
代码中的错误 - 关键字“as”附近的语法不正确。 - 在 venky2.opt1=venky.code 上左加入 venky 作为 TBLOPT1 JOINING 不在ON
子句中的表时,需要给表起别名。
对不起,如果我写了一个错误的代码,我已经编辑了它,一个迟到的编辑,但只是为了正确起见以上是关于复杂的sql连接查询的主要内容,如果未能解决你的问题,请参考以下文章