私の目標は、クエリを作成することです。A、B、C の 3 つのテーブルがあります。テーブルは、A.bID = B.bID、B.cID = C.cID のように記述されています。これにより、基本的に、レコードを a から b にリンクし、b レコードを c からのレコードにリンクするクエリを作成できます。これまでのところ、単純なクエリです。
私の問題は何ですか...クエリに含まれる列の1つ(C.col3と呼びましょう)には一意の値が必要です。この列の値はクエリ結果に 1 回しか表示されませんが、他のテーブルの他の列にはこの要件はありません。
このクエリを書くのを手伝ってくれる人はいますか?
ありがとう...
更新 1:
これが表のレイアウトです(申し訳ありませんが、一般的な名前を使用する必要があります)
表 A
aID、bID、aCol1、aCol2、aCol3 ... aCol10
テーブル B
bID、cID、bCol1、bCol2、bCol3 ... bCol10
表 C
cID、cCol1、cCol2、col3、cCol4 ... cCol10
col3 に一意の値の制約がない場合、クエリは次のように記述します。
SELECT
A.aID, A.bID, A.aCol1 ... A.aCol10,
B.bID, B.cID, B.bCol1 ... B.bCol10,
C.cID, C.cCol1, C.cCol2, C.col3 ... C.cCol10
FROM
A, B, C
WHERE
A.bID = B.bID AND B.cID = C.cID
...しかし、もちろん、C.col3 の値が一意であることは保証されません。
更新 2:
詳細...
テーブル A とテーブル B は 1 対多の関係にあります。A は「ヘッダー」、B は「アイテム」です。
テーブル B とテーブル C は 1 対 1 の関係にあります。
これらのテーブルはキャッシュ メカニズムの一部であるため、多くのデータは似ているように見えますが、一部の列では異なります。
A はヘッダーであるため、ほとんどの重複値は A
にあります。最初に行を A.aID で並べ替える必要がありますが、その後は最初に返された行のみが必要で、C.col3 の値はありません。その列の前の行に表示されます。
それは物事を少し明確にしますか、それともまだ意味がありませんか? :)
最終更新:
Bartosz Klimek の回答を選択したのは、必要なものに最も近いものだったからです。途中でネストされた結合句を変更する必要がありました。
ご協力ありがとうございました!