【问题标题】:complicate sql join query复杂的sql连接查询
【发布时间】: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.venki2opt1opt2opt3allot 列的表格(5 列)。最后 4 列的值必须取自表 1,例如: f41 ,历史。泰米尔语,英语,历史。

【问题讨论】:

  • 加入表需要一些参考键,那么你在两个表之间的参考键是什么?

标签: php mysql sql sql-server


【解决方案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 子句中的表时,需要给表起别名。
    • 对不起,如果我写了一个错误的代码,我已经编辑了它,一个迟到的编辑,但只是为了正确起见
    猜你喜欢
    • 2010-11-02
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-29
    • 1970-01-01
    • 2011-10-08
    • 2023-03-05
    相关资源
    最近更新 更多