@SET1

Не работает запрос MySQL. Как правильно составить?

Есть таблица публикаций и таблица медиа-ссылок, относящихся к этим публикациям. Когда я выбираю публикации, мне надо выбрать только те, которые помечены как status = 1 AND article = 1 и + сделать запрос на получение медиа-ссылки к упомянутым выше публикациям. Если медиа-ссылки нет, то должно вернуться NULL.

Делал так:

SELECT tbl_publication.id, tbl_publication.name, tbl_publications_media.media_url FROM tbl_publication LEFT JOIN tbl_publications_media ON tbl_publication.id = tbl_publications_media.publication_id WHERE article = 1 AND status = 1 AND media_type = 3 ORDER BY id DESC LIMIT 9


но в результате возвращаются только те публикации, у которых есть медиа-ссылки в таблице tbl_publications_media

P.S: media_type = 3 - это колонка в таблице tbl_publications_media по которой происходит выборка нужной медиа-ссылки. Она обязательно должна присутствовать в запросе
  • Вопрос задан
  • 60 просмотров
Решения вопроса 1
@dzhebrak
Вы делаете JOIN, а затем проверяете столбец media_type на определенное значение (т.е. этот столбец не может быть пустым), поэтому естественно будут возвращаться только те публикации, для которых есть записи в таблице tbl_publications_media. Нужно этот столбец дополнительно проверить на NULL:

SELECT 
	tbl_publication.id, tbl_publication.name, tbl_publications_media.media_url 
FROM tbl_publication 
LEFT JOIN tbl_publications_media ON tbl_publication.id = tbl_publications_media.publication_id 
WHERE article = 1 AND status = 1 AND (media_type IS NULL OR media_type = 3) 
ORDER BY id DESC LIMIT 9
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы