SQL的多表联合查询问题

北洋螃蟹 发布于 2013/08/09 09:15
阅读 2K+
收藏 0

目前有下面三个表格,主键均为图号,请问如何生成最下面的最终表呢?

A表内容:

图号 数量
A001 5
A002 8

B表内容:

图号 数量
A001 5
A002 6
A003 7

C表内容:

图号 数量
A001 6
A004 7

最终输出表:

A图号 A数量 B图号 B数量 C图号 C数量
A001 5 A001 5 A001 6
A002 8 A002 6
A003 7
A004 7

加载中
0
mark35
mark35
用cross连接,不过只怕mysql会歇菜的
北洋螃蟹
北洋螃蟹
能否帮忙给写个语句呀?oracle或者Sql Server都可以
0
huan
huan
一个外联接就能搞定,没难度吧
北洋螃蟹
北洋螃蟹
能否帮忙给写个语句呀?oracle或者Sql Server都可以,感谢
0
bro
bro

瞎写了个 mysql 的


SELECT
    *
FROM
    (SELECT
        T1.TN TN1, T1.NUM TNUM1, T2.TN TN2, T2.NUM TNUM2
    FROM
        T1
    RIGHT JOIN T2 ON (T1.TN = T2.TN)) T12
        LEFT JOIN
    T3 ON (T12.TN2 = T3.TN)
UNION SELECT
    '' TN1, '' TNUM1, '' TN2, '' TNUM1, TN TN3, NUM TNUM1
FROM
    T3
WHERE
    TN NOT IN (SELECT
            TN
        FROM
            T1)
        AND TN NOT IN (SELECT
            TN
        FROM
            T2);

0
mark35
mark35
SELECT t.*, c.图号 c图号, c.数量 c数量 
  (SELECT a.图号 a图号, a.数量 a数量, b.图号 b图号, b.数量 b数量
  FROM a JOIN b ON a.图号 = b.图号)t
  JOIN c WHERE c.图号 = t.a图号 OR c.图号 = t.b图号
0
天冰
天冰
思路:
1-先把三张表做个联合,得到一张表,记录着ID集合

2-再用这张表分别连接三张表

示范代码如下:


select 
tab1.id 'A图号',tab1.name 'A数量',tab2.id 'B图号',tab2.name 'B数量',tab3.id 'C图号',tab3.name 'C数量'
from
  (select id from tab1 union select id from tab2 union select id from tab3) A
  left join tab1 on A.id=tab1.id 
  left join tab2 on A.id=tab2.id 
  left join tab3 on A.id=tab3.id; 
结果是:

返回顶部
顶部