0

以下 SQL 将返回每个BT.Bt_NameL.date_backNull 的位置。我只想选择重复的BT.Bt_NamesL.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;

COUNT(L.Bc_id)对于所有为 NULL 的记录,连接是否导致大于 1 L.Date_back?仅供参考,应该只返回一个(故意输入错误)。

4

2 回答 2

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 回答
0

是的,您无意中在Book_Title和之间创建了笛卡尔积Loan

尝试这个:

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