2017-03-15 145 views
-2

我有以下表MySQL查询图书馆管理系统

成员(memberNo,姓名,年龄),

书(ISBN,书名,作者,出版者,出版年,类别)

借(memberNo,ISBN,日期)

和我期待的答案或线索以下查询

查找成员的瓦时的名字o不止一次借过同一本书。我一直在使用下列但它给我就列名“name”

SELECT member.name 
    FROM member 
    WHERE member.memberNo IN (SELECT borrowed.member_memberNo 
    FROM borrowed 
    WHERE borrowed.book_isbn IN(
    SELECT COUNT(borrowed.book_isbn) as 'countNo' 
    FROM borrowed 
    WHERE 'countNo' >1)); 

非常感谢

+0

询问家庭作业帮助的问题必须包括您迄今为止解决问题所做的工作摘要,以及您解决问题的难点描述。 –

+1

@Isaac Fife是正确的 - 但我心情很好,会给你一些提示:搜索GROUP BY和HAVING。祝你好运。 – user3741598

回答

0

您可以使用GROUP BYCOUNT来查找成员借用每本书的次数。

SELECT memberNo, isbn, COUNT(*) AS borrow_times 
FROM borrowed 
GROUP BY memberNo, isbn 

然后检查borrow_times > 1找到谁借的同一本书不止一次的:

HAVING borrow_times > 1 

将这个变成一个子查询,以便您可以用member表加入吧

SELECT DISTINCT m.name 
FROM member AS m 
JOIN (
    SELECT memberNo, isbn, COUNT(*) AS borrow_times 
    FROM borrowed 
    GROUP BY memberNo, isbn 
    HAVING borrow_times > 1 
) AS b ON m.memberNo = b.memberNo 
+0

现在明白了。非常感谢! – Beyg