2014-04-03 36 views
0

我有三个表:Book持有idtitle等。
member持有idname等...
loan持有member_idbook_idreturnDate等。实现的SQL加入

我想写一个查询,如果他们已借出3本或三本书,我会将所有成员详细信息返回给我。到目前为止,我有:

SELECT * FROM member m 
JOIN member_loans_book mlb ON m.id = mlb.Member_id 
    HAVING count(mlb.Book_id) <= 3 

它编译但没有返回什么,我错了吗?
任何指针赞赏。

+0

添加GROUP BY子句m.id,并考虑在哪里,而不是 – RobP

+1

尝试使用'左JOIN'因为有可能是谁的人甚至没有借给一本书。 – user2989408

+0

只是在用户评论..最后评论我已经填充它自己,所以我知道它应该返回的东西(如果我的发言是正确的,我怀疑),但我明白你的意思是在没有任何事情发生,所以欢呼 – HammockKing

回答

0

sqlFiddle

SELECT m.MemberId, m.Name, COUNT(*) 
FROM Member m 
JOIN Loan l ON m.MemberId = l.MemberId 
GROUP BY m.MemberId, m.Name 
HAVING COUNT(*) <= 3 
+0

这就是它, 非常感谢 – HammockKing