联接多个表

悠悠悠悠

我有4张桌子

表A

            code        accnt
           -------------------
            123          xxx
            222          yyy
            333          zzz

表B

           code         alloted
          -----------------------
           123            100
           222            200
           333            300

表C

           code         ref      project
          -------------------------------
          333        11-2015     maintenance

表D

          code          ref      item       cost
         ---------------------------------------
          333       11-2015      hammer     100
          333       11-2015      nail       200

我想加入此表并具有和输出这样的内容

         code      accnt          ref     alloted
        -----------------------------------------
         123       xxx                        100
         222       yyy                        200
         333       zzz                        300
         333       maintenance    11-2015     
         333       hammer         11-2015     100
         333       nail           11-2015     200      

我为此使用左联接,但我无法将字段A.accnt,C.project和D.item合并为一列。

汤姆

听起来您需要JOIN前2个表UNION,而其他2个表则需要

看看这是否适合您-

SELECT a.code, a.accnt, NULL AS ref, b.alloted
FROM A 
LEFT JOIN B ON a.code = b.code

UNION

SELECT c.code, c.project AS accnt, c.ref, NULL AS alloted

UNION 

SELECT d.code, d.item AS accnt, d.ref, d.cost as alloted

UNION合并时将获得不同的结果。如果要得到所有结果,请UNION ALL改用。

这是一个可能有助于您理解两者之间的区别的解释-JOIN根据某些条件通过附加列来UNION组合多个表,其中通过附加行来组合多个表。有很多教程可以解释JOIN/UNION如果您需要更多信息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章