MySQL получает количество книг для каждого пользователя

0

Я пытаюсь вернуть количество книг, которые участник имеет из всех библиотек.

В разных библиотеках член имеет другой уровень члена.

  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.

Как изменить запрос для выполнения этого?

  • 0
    Используйте select count(*) вместо select b.* .
Теги:

1 ответ

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
  • 0
    Спасибо, но я хочу заказать по уровням в библиотеке 1.
  • 0
    Я добавил порядок по пункту
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню