我有两个表,想要加入这些表。
列名旁边的(*)表示它是主键,(**)表示外键
//table_document
ID_DOC* DOC STATUS
DOC01 AAA 1
DOC02 BBB 1
DOC03 CCC 1
DOC04 DDD 1
DOC05 EEE 1
//table_vendor_document
NO* ID_VEND** ID_DOC**
1 VEND01 DOC01
2 VEND01 DOC02
3 VEND01 DOC03
4 VEND01 DOC04
5 VEND01 DOC05
6 VEND02 DOC01
7 VEND02 DOC02
8 VEND02 DOC05
9 VEND03 DOC03
10 VEND03 DOC04
每个ID_VEND应该有五个ID_DOC,我想知道每个ID_VEND中缺少哪个ID_DOC
我使用此查询:
SELECT table_vendor_document.ID_VEND,table_document.ID_DOC FROM `table_document`
LEFT OUTER JOIN table_vendor_document
ON table_document.ID_DOC = table_vendor_document.ID_DOC
WHERE table_vendor_document.ID_VEND = 'VEND03'
结果是:
ID_VEND ID_DOC
VEND03 DOC03
VEND03 DOC04
我的预期输出应该是:
ID_VEND ID_DOC
VEND03 NULL
VEND03 NULL
VEND03 DOC03
VEND03 DOC04
VEND03 NULL
答案 0 :(得分:0)
只需切换表顺序即可。 table_vendor_document left join table_document
。
SELECT table_vendor_document.ID_VEND,table_document.ID_DOC FROM `table_vendor_document`
LEFT OUTER JOIN table_document
ON table_document.ID_DOC = table_vendor_document.ID_DOC
WHERE table_vendor_document.ID_VEND = 'VEND03'
答案 1 :(得分:0)
您的“ ON”条件使查询仅检索table_vendor_document的外键等于table_document的主键的行。在VEND03行中,只有两个外键:DOC03和DOC04。 VEND03行未引用table_document的任何其他行,因此才得到这样的结果。