@SET1

MySQL запрос возвращает некорректный ответ?

Таблица tbl_publications_media хранит ссылки на медиа-материалы публикаций (media_url). Материалы выбираются по колонке publication_id (id публикации) и media_type (3 - обложка статьи, 4, 5, 6 и тд - видео, аудио, фото...).

Я пытаюсь получить информацию о публикациях сайта вместе с обложкой публикации (media_type = 3 - это обложка). Проблема в том, что если в таблице есть другие медиа материалы (media_type = любое значение, отличное от 3), то в ответе публикации не будет вообще, а если у публикации нет обложки (в таблице tbl_publications_media нет никаких записей касаемо публикации), то в ответе она есть, и ее колонка media_url = null (что правильно).

Вот запрос MySQL:

SELECT tbl_publication.id, tbl_publication.name, tbl_publication.content, tbl_publication.create_time, tbl_publication.type, tbl_publication.section_id, tbl_publications_media.media_url FROM tbl_publication LEFT JOIN tbl_publications_media ON tbl_publication.id = tbl_publications_media.publication_id WHERE tbl_publication.article = 0 AND tbl_publication.status = 1 AND tbl_publication.type = 0 AND (tbl_publications_media.media_type IS NULL OR tbl_publications_media.media_type = 3) GROUP BY id ORDER BY id DESC LIMIT 10


Не могу понять в чем дело. Мне надо получить всю основную информацию о публикации и + ее обложку (media_type = 3), и если обложки нет, то media_url должен быть равен null. Все работало ровно до тех пор, пока в таблице tbl_publications_media не стали появляться записи с media_type отличным от 3.
  • Вопрос задан
  • 45 просмотров
Решения вопроса 1
BojackHorseman
@BojackHorseman Куратор тега MySQL
...в творческом отпуске...
надо поправить условие в ON с учетом media_type = 3
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы