我是一个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中不存在结果,则这些结构可以是任何形式的空值。
非常感谢正确指示的任何指针
答案 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