Я пытаюсь вернуть количество книг, которые участник имеет из всех библиотек.
В разных библиотеках член имеет другой уровень члена.
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 и уровень их членства, но я не знаю, как получить общий объем книг из всех библиотек?
например, Member 1 имеет 564 книги из всех библиотек и является золотым участником в Библиотеке 1, член 2 имеет 365 книг из всех библиотек и является серебряным членом в Библиотеке 1.
Я хочу заказать по уровням участников в библиотеке 1. Вот почему я включил в предложение where.
Как изменить запрос для выполнения этого?
Вы можете достичь этого, как показано ниже:
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
select count(*)
вместоselect b.*
.