A、B、C の 3 つのテーブルがあります。ここで、A は多対 1 の B、B は多対 1 の C です。A のすべての C のリストが必要です。
私のテーブルは次のようなものです: A[id, valueA, lookupB], B[id, valueB, lookupC], C[id, valueC]. 入れ子になった 2 つの SELECT を使用してクエリを作成しましたが、DISTINCT を使用して INNER JOIN を実行できるかどうか疑問に思っています。
SELECT valueC
FROM C
INNER JOIN
(
SELECT DISTINCT lookupC
FROM B INNER JOIN
(
SELECT DISTINCT lookupB
FROM A
)
A2 ON B.id = A2.lookupB
)
B2 ON C.id = B2.lookupC
編集: テーブルはかなり大きく、A は 500k 行、B は 10k 行、C は 100 行であるため、基本的な内部結合を行い、最後に DISTINCT を使用すると、次のように多くの不必要な情報が得られます。
SELECT DISTINCT valueC
FROM
C INNER JOIN B on C.id = B.lookupB
INNER JOIN A on B.id = A.lookupB
これは非常に遅いです(上記のネストされた SELECT よりも数倍遅いです。