Не могу понять, как сделать запрос, чтобы чертов (WHERE genre_id = 1
) не обрезал массив в GROUP_CONCAT
.
Общий вид таблиц:
idbook
book_id | genre_id
idgenre | genre
Вот такой запрос работает отлично:
SELECT
GROUP_CONCAT(genre) AS thisgenre,
FROM
book
LEFT JOIN
genre_book ON idbook = book_id
LEFT JOIN
genre ON genre_id = idgenre
GROUP BY idbook
Выводит:
Триллер
Триллер,Экшн,Приключения
Триллер,Психология,Постапокалиптика,Ужасы
А когда я пытаюсь добавить в поисковой запрос на жанры (WHERE genre_id = 1
):
SELECT
GROUP_CONCAT(genre) AS thisgenre,
FROM
book
LEFT JOIN
genre_book ON idbook = book_id
LEFT JOIN
genre ON genre_id = idgenre
WHERE genre_id = 1
GROUP BY idbook
Получается:
Триллер
Триллер
Триллер
Но мне нужен весь массив жанров, я его вывожу на страницу.
Оставьте в выборке все жанры, что бы их захватил group_concat и отфильтруйте требуемые книги после группировки, т.е. в having
:
SELECT GROUP_CONCAT(genre) AS thisgenre,
FROM book
LEFT JOIN genre_book ON idbook = book_id
LEFT JOIN genre ON genre_id = idgenre
GROUP BY idbook
HAVING sum(IF(genre_id=1,1,0))>0
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Нужна помощь с JSON и его взаимодействием с БДИмеется к примеру такой JSON
На данный вопрос уже ответили:
Использую django с python3При pip install mysql-python выдает ошибку: Command "python setup