私は4つのテーブル、すなわちcustomers、orders、orderDetails、Productsを持っています。SQL:注文の詳細に基づいて特定の注文を引き出す方法は?
Customerテーブル
cId cName
1 James
2 Adam
3 Ed
受注テーブル
oId cId
1 1
2 2
3 3
たOrderDetailsテーブル
oId odId pId Quantity
1 1 1 50
1 2 2 45
2 3 2 52
3 4 1 44
Productsテーブル
pId PName
1 Apple
2 Orange
オレンジを注文したことのないお客様のリストが必要です。注文の詳細にオレンジが付いていない顧客のレコードを引き出すことができます。しかし、この事件の1つでは、ジェームスはリンゴとオレンジの両方を注文しました。だから、クエスチョンはジェームズを引き寄せてはならない。私はより大きなクエリでこれを行うことができます。しかし、私は何かが不足している場合は、これをより小さいクエリで欲しい。
SQL
SELECT c.cId, c.cName, p.PName, od.Quantity FROM customers c
LEFT JOIN orders o ON c.cId = o.cId
LEFT JOIN orderDetails od ON o.oId = od.oId
JOIN products p ON od.pId = p.pId
WHERE od.pId != 2
WHERE句は、2番目のLEFT JOINを通常のINNER JOINとして動作させます。 – jarlh