0

次の SQL は、すべて Null を返しBT.Bt_NameますL.date_back。が重複しているBT.Bt_Namesのみを選択したいL.Bc_id

SELECT BT.Bt_Name
FROM Book_Title BT INNER JOIN (
    Book_Copy BC INNER JOIN Loan L ON BC.Bc_id = L.Bc_id
)   ON BT.Bt_id = BC.Bt_id
WHERE L.Date_back Is NULL
GROUP BY BT.Bt_name
HAVING COUNT(L.Bc_id) >1;

Is NULLCOUNT(L.Bc_id)のすべてのレコードで >1 になるのは結合ですか? L.Date_back参考までに、1 つだけを返す必要があります (意図的な入力エラー)。

4

2 に答える 2

0

はい、うっかり と の間にデカルト積を作成していBook_TitleますLoan

これを試して:

HAVING COUNT(DISTINCT BC.Bt_id) > 1
于 2009-11-06T00:24:04.820 に答える
0

なぜブラケットを気にするのですか?なぜこれではないのですか?

SELECT BT.Bt_Name, count(*) ct FROM Book_Title BT

INNER JOIN  Book_Copy BC on BT.Bt_id = BC.Bt_id

INNER JOIN Loan L ON BC.Bc_id = L.Bc_id

WHERE L.Date_back Is NULL

GROUP BY BT.Bt_name HAVING COUNT(*) >1;

または、スティックの端が間違っていますか?

于 2009-11-06T17:59:11.463 に答える