現在のクエリは、サンプル データであっても、多くのデータを提供する必要があります。
SELECT T1.CUSTID, T1.PART, T2.CUSTID, T2.PART FROM TABLE1 AS T1
LEFT JOIN TABLE2 AS T2 ON T1.CUSTID = T2.CUSTID
WHERE T1.PART <> T2.PaRT
ORDER BY T1.CUSTID
期待される結果:
CUSTID1 PART1 CUSTID1 PART2
CUSTID1 PART1 CUSTID1 PART3
CUSTID1 PART2 CUSTID1 PART1
CUSTID1 PART2 CUSTID1 PART3
CUSTID1 PART3 CUSTID1 PART1
CUSTID1 PART3 CUSTID1 PART2
CUSTID1 PART4 CUSTID1 PART1
CUSTID1 PART4 CUSTID1 PART2
CUSTID1 PART4 CUSTID1 PART3
おそらく条件付きの FULL OUTER JOIN が必要ON T1.CustID = T2.CustID AND T1.Part = T2.Part
です。FULL を実行できない場合は、LEFT 結合と RIGHT 結合の UNION を使用してください。または、Table1 に対応する行がない Table2 の行について心配していない場合は、強化された ON 句を使用した既存の LEFT JOIN だけで十分です。
すべての一致した行とすべての不一致の行が必要な場合は、次を使用します
SELECT T1.CustID, T1.Part, T2.CustID, T2.Part
FROM Table1 AS T1
FULL OUTER JOIN Table2 AS T2
ON T1.CustID = T2.CUSTID AND T1.Part = T2.Part
不一致の行のみを表示したい場合は、次のように記述します。
SELECT T1.CustID, T1.Part, T2.CustID, T2.Part
FROM Table1 AS T1
FULL OUTER JOIN Table2 AS T2
ON T1.CustID = T2.CUSTID AND T1.Part = T2.Part
WHERE T1.Part IS NULL OR T2.Part IS NULL
LEFT-UNION-RIGHT クエリ (すべての行) は次のようになります。
SELECT T1.CustID, T1.Part, T2.CustID, T2.Part
FROM Table1 AS T1
LEFT OUTER JOIN Table2 AS T2
ON T1.CustID = T2.CUSTID AND T1.Part = T2.Part
UNION
SELECT T1.CustID, T1.Part, T2.CustID, T2.Part
FROM Table1 AS T1
RIGHT OUTER JOIN Table2 AS T2
ON T1.CustID = T2.CUSTID AND T1.Part = T2.Part
そして、すべての行に対する LEFT のみのクエリは次のようになります。
SELECT T1.CustID, T1.Part, T2.CustID, T2.Part
FROM Table1 AS T1
LEFT OUTER JOIN Table2 AS T2
ON T1.CustID = T2.CUSTID AND T1.Part = T2.Part
不一致の行のみを表示する場合は、適切な WHERE フィルター条件を追加できます。(明らかに、一致した行のみを表示したい場合は、通常の INNER JOIN または単に JOIN を使用します。)
警告 Emptor : この SQL を検証した DBMS はありません。