3つのテーブルの結合を持つクエリがあります。 3番目の表の列の1つにブール値があります。 。表2と表3はproduct_idで接続され、表3の各product_idは真値と偽値を受信値として関連付けることができます。私はテーブル3の受信値が真の値しか持たない製品に関連付けられているテーブル1のすべてのレコードを返すクエリが必要です。サンプルデータで 私は、私はそれがNOT INを使用して動作させるが、それは(現在は約2000レコードです)私のデータセットと非常に遅い実験午後後GHIすべての行が一致するレコードのみを返すSQL結合
Table 1 - Sale
ID sale#
1 ABC
2 DEF
3 GHI
Table 2 PO Table 1 join Table 2 on Table1.ID = Table 2.SaleID
ID SaleID
1 1
2 1
3 2
4 3
5 3
Table 3
ID POID Received Table 2 right join table 3 on Table 2.ID = Table 3.POID
1 1 True
2 1 False
3 2 True
4 3 False
5 4 True
6 5 True
7 5 True
を返すようにしたいの下に私はそれがおそらく結合を再作成する必要があるためだと思います。これを達成するためのよりエレガントな方法があるように思えます。
SELECT Distinct Table1.id, Table3.received
FROM Table3 INNER JOIN (Table2 INNER JOIN Table1 ON Table2.saleID = Table1.id)
ON Table3.POID = Table2.id
WHERE ((Table3.received)=True) and Table1.id NOT IN (
SELECT Table1.id
FROM Table3 INNER JOIN (Table2 INNER JOIN Table1 ON Table2.saleID = Table1.id)
ON Table3.POID = Table2.id
WHERE ((Table3.received)=False));
サンプルデータとコードの一部を提供できる場合は非常に役に立ちます。すなわち、スクリーンショット、コードスニペット、現在のリターンなど。 – StelioK
'私は3テーブルジョインでクエリを持っています.'あなたが作業しているクエリを投稿してください。 –
これまで何を試しましたか?質問する方法を学びます。 https://stackoverflow.com/help/how-to-ask – Eric