Я пытаюсь запустить этот запрос:MySQL с 2 СЛЕВА JOIN и на том же столе
SELECT
Destaque.destaque, Noticia.id, Noticia.antetitulo,
Noticia.titulo, Noticia.lead, Noticia.legenda,
Noticia.publicacao, Seccao.descricao, Album.pasta,
Foto.ficheiro, Foto.descricao, Cronista.nome,
Cronista.profissao, Cronista.ficheiro,
AudioFile.*, AudioCollection.*, VideoFile.*, VideoCollection.*
FROM
nt_highlights AS Destaque
LEFT JOIN nt_noticias AS Noticia ON Destaque.noticia_id = Noticia.id
LEFT JOIN mm_fotos AS Foto ON Noticia.foto_id = Foto.id
LEFT JOIN nt_temas AS Seccao ON Noticia.tema_id = Seccao.id
LEFT JOIN mm_albuns AS Album ON Foto.album_id = Album.id
LEFT JOIN nt_cronistas AS Cronista ON Cronista.id = Noticia.cronista_id
LEFT JOIN ntNoticias_mmFiles AS Rel ON Rel.noticia_id = Noticia.id
LEFT JOIN mm_files AS AudioFile ON AudioFile.id = Rel.file_id
LEFT JOIN mm_coleccoes AS AudioCollection ON AudioFile.coleccao_id = AudioCollection.id
LEFT JOIN mm_files AS VideoFile ON VideoFile.id = Rel.file_id
LEFT JOIN mm_coleccoes AS VideoCollection ON VideoFile.coleccao_id = VideoCollection.id
WHERE
Destaque.area_id = 1
AND Noticia.paraPublicacao = 1
AND Noticia.publicacao <= NOW()
AND (AudioFile.mimeType != '' OR AudioFile.id IS NULL)
AND (VideoFile.mimeType = '' OR VideoFile.id IS NULL)
ORDER BY
Destaque.destaque
Это поможет мне ряд статей (из nt_noticias
) и идея заключается в том, чтобы получить в то же время a Video
и файл Audio
из таблицы mm_files
.
Что происходит, что когда у меня есть статья со звуком и видео, MySQL вернет 4 строки:
- со звуком (видео нуля)
- с видео (звук пустой)
- со всеми нулям
- с звуком и видео
Как я могу «заставить» его вернуть только одну строку за статью с y существующее видео и аудио? Что я здесь делаю неправильно?
Предложение LIMIT не работает внутри запроса, потому что я нахожусь в MySQL 5.0, но я заменил его GROUP BY noticia_id и отлично работает. Огромное спасибо! – changelog
Я всегда забываю, что MySQL не обрабатывает LIMIT в подзапросах. :-) Но я рад, что смогу помочь. – Tomalak