1

私は SQL クエリにあまり慣れていませんが、多くのテーブルを含むこのクエリを実行する必要があります。どうぞ:

(注:idは常にPRIMARY KEYです。)

A(id, name)
B(id, title, a_id, FOREIGN KEY(a_id) REFERENCES A(id))
C(id, d_id, b_id, FOREIGN KEY (d_id) REFERENCES D(id), FOREIGN KEY REFERENCES (b_id) REFERENCES B(id))
D(id, content)
E(id d_id, a_id, c_id, FOREIGN KEY (d_id) REFERENCES D(id), FOREIGN KEY (a_id) REFERENCES A(id),  FOREIGN KEY (C_id) REFERENCES c(id))

table からすべての行を取得する必要がありますE

これは私が書いたクエリです:

SELECT *
FROM E
LEFT JOIN D ON E.d_id = D.id
LEFT JOIN A ON E.a_id = A.id
LEFT JOIN B LEFT JOIN A ON B.a_id = B.id
ON C.b_id = B.id
LEFT JOIN D ON C.d_id = D.id
ON E.c_id = C.id

しかし、それは私に実行時エラーを与えます:

あいまいな列名「ID」。

この問題を解決するためのヒントを教えてもらえますか?

4

3 に答える 3

0

代わりにこれを試してください:

SELECT *
FROM E
LEFT JOIN D ON E.d_id = D.id
LEFT JOIN A ON E.a_id = A.id
LEFT JOIN B ON B.id = B.a_id
LEFT JOIN C ON C.b_id = B.id AND c.d_id = d.Id
于 2013-02-21T12:58:04.470 に答える
0

問題はこのステートメントにある可能性があります

LEFT JOIN B LEFT JOIN A ON B.a_id = B.id? 最初のleft join

また、同じテーブル内の 2 つの列を比較するだけの B.a_id と B.id を比較しています。

于 2013-02-21T12:54:50.637 に答える
0

他のテーブルの ID の名前を変更するか、ID を表示しないでください。

SQL Server の場合:

A.id AS id_A、B.id AS id_B... を選択します。

于 2013-02-21T16:21:38.553 に答える