如何联接两个以上的表以获得联合结果?

问题描述

the Venn show what I want&what I get

我有一个这样的sql


    SELECT 
           A.NAME,A.CODE,B.b_grade,C.c_grade 
      FROM A
     JOIN B ON B.NAME = A.NAME
     JOIN C ON C.NAME = A.NAME

我想获得像Veen表演那样的结果。但是sql的结果给了我另一个

PS:表B没有列“ c_grade”,因此在sql结果中,对于B,列“ c_grade”可以设置为零

解决方法

下面是您需要做的所有事情。

Set Operators

SELECT A.NAME,A.CODE,B.B_GRADE,NULL AS C_GRADE
  FROM A JOIN B ON B.NAME = A.NAME
UNION ALL
SELECT A.NAME,NULL AS B_GRADE,C.C_GRADE
  FROM A JOIN C ON C.NAME = A.NAME
,

您可以离开外部联接,然后检查是否有任何表匹配:

SELECT 
       A.NAME,B.*,C.*
  FROM A
 LEFT JOIN B ON B.NAME = A.NAME
 LEFT JOIN C ON C.NAME = A.NAME
 WHERE B.NAME != NULL OR C.NAME != NULL
,

尝试一下

SELECT * 
FROM tabA 
INNER JOIN tabB
      ON tabA.primaryKey=tabB.tabAId
INNER JOIN tabC
      ON tabA.primaryKey=tableC.tabAId