从1表中选择数据并从另一个表中填写休息,其中A中的某些条目不显示在B上

时间:2018-02-13 13:28:13

标签: sql

我是一个SQL新手并且通过使用WHERE(A.Field1 = B.Field1)简单选择和合并来满足我的需求但是我现在有一种情况我有表A,其中包含一个列表子结构和子结构上的每个组件类型都是这样的

+------------------+-------+
| Substructure     | Ident |
+------------------+-------+
| Some Thing       | 01    |
+------------------+-------+
| Some Thing       | 02    |
+------------------+-------+
| Some Other Thing | 01    |
+------------------+-------+
| Some Other Thing | 06    |
+------------------+-------+

我有第二个表,其中包含有关每个组件的信息,但是此表仅包含已为该行中至少一个组件填写信息的信息。

表B

+--------------+-------+---------------+---------+
| Substructure | Ident | Task Complete | Reading |
+--------------+-------+---------------+---------+
| Some Thing   | 01    | Y             | 09      |
+--------------+-------+---------------+---------+
| Some Thing   | 02    | N             |         |
+--------------+-------+---------------+---------+

现在我试过了

SELECT 
     A.Substructure
     A.Ident
     B.Substructure
     B.Ident
     B.Task_Complete
     B.Reading
From A,B Where (A.Substructure = B.Substructure) 

这显然只取出了两个列表中存在子结构的位置。 我期待的是一种获取A中存在的所有子结构并将其与B中的结果相匹配的方法。如果B中不存在结果,则这些结构可以是任何形式的空值。

非常感谢正确指示的任何指针

2 个答案:

答案 0 :(得分:1)

试试这个:

SELECT 
     A.Substructure
     A.Ident
     B.Substructure
     B.Ident
     B.Task_Complete
     B.Reading
From A
     left join B on (A.Substructure = B.Substructure) 

答案 1 :(得分:1)

您可以使用LEFT加入

来实现它
SELECT 
     A.Substructure
     A.Ident
     B.Substructure
     B.Ident
     B.Task_Complete
     B.Reading
From A
LEFT JOIN ON B A.Substructure = B.Substructure