Reputation: 379
I'm trying to return the amount of books a member has from all libraries.
In different libraries the member has a different member level.
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'
I've done the basic above to get members from library 1 and their membership level but i don't know how to get the total amount of books from all libraries?
e.g. Member 1 has 564 books from all libraries and is a gold member at Library 1, Member 2 has 365 books from all libraries and is a silver member at Library 1.
I want to order by member levels at library 1. That is why i included in where clause.
How do i change the query to accomplish this?
Upvotes: 0
Views: 155
Reputation: 2762
You can achieve it as below:
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
In your query, you might have a mistake in the join:
LEFT JOIN book e on e.id=a.library_id
I think it should be
LEFT JOIN book e on e.library_id=a.id
Upvotes: 2