我试图从一个图书馆返回会员所拥有的书籍数量。
在不同的库中,成员具有不同的成员级别。
SELECT b.*
FROM library a
LEFT JOIN member b on b.id=a.member_id
LEFT JOIN member_level d on d.id=a.member_level_id
LEFT JOIN book e on e.library_id=a.id
WHERE ((a.member_id='1' AND a.member_level_id='1')
OR (a.member_id='2' AND a.member_level_id='2')) AND a.id='1'
我已完成上述基本工作,以便从图书馆1及其会员级别获取成员,但我不知道如何从所有图书馆获取图书总数?
e.g。会员1拥有来自所有图书馆的564本书籍,是图书馆1的金卡会员,会员2拥有来自所有图书馆的365本书籍,是图书馆1的银卡会员。
我想按库1的成员级别订购。这就是我在where子句中包含的原因。
如何更改查询以完成此操作?
答案 0 :(得分:2)
您可以按照以下方式实现:
SELECT a.member_id, Sum(e.id) as books, a.member_level_id, a.id as library_id
FROM library a
LEFT JOIN member b on b.id=a.member_id
LEFT JOIN member_level d on d.id=a.member_level_id
LEFT JOIN book e on e.library_id=a.id
WHERE a.member_id IN ('1', '2')
GROUP BY a.member_id, a.id, a.member_level_id
Order by a.member_level_id
在您的查询中,您可能在加入时出错:
LEFT JOIN book e on e.id=a.library_id
我认为应该是
LEFT JOIN book e on e.library_id=a.id