MySQL为每个用户获取书籍数量

时间:2018-02-22 13:56:43

标签: mysql sql

我试图从一个图书馆返回会员所拥有的书籍数量。

在不同的库中,成员具有不同的成员级别。

  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子句中包含的原因。

如何更改查询以完成此操作?

1 个答案:

答案 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