2011-06-07 14 views
5

Quiero seleccionar cada foto con sólo un comentario y quiero que el comentario sea el que tiene la máxima IdentificaciónMySQL combinación izquierda de mesa justo valor máximo

He tratado siguiente:

SELECT 
    p.id, 
    p.title, 
    MAX(c.id), 
    c.comment 
FROM tb_photos AS p 
    LEFT JOIN tb_comments AS c ON p.id=c.photos_id. 

Parece estar funcionando, pero me pregunto si hay una mejor manera de hacerlo.

Respuesta

5

es necesario aplicar al máximo (comentario ID) en cada foto (suponiendo que el ID de comentario es de auto-incremento y por lo tanto siempre es el más reciente agregado a la tabla)

select 
     p.*, 
     tbc.Comment 
    from 
     tb_photos p 
     LEFT JOIN (select c.photos_id, 
          max(c.id) lastCommentPerPhoto 
         from 
          tb_comments c 
         group by 
          c.photos_id 
         order by 
          c.Photos_id) LastPhotoComment 
      on p.id = LastPhotoComment.photos_id 
      LEFT JOIN tb_comments tbc 
       on LastPhotoComment.LastCommentPerPhoto = tbc.id 
-2

También puede hacer esto con una unión cruzada:

select 
     p.*, 
     LastPhotoComment.Comment 
    from 
     tb_photos p 
     cross join (select top 1 c.Comment 
         from 
          tb_comments c 
         where 
          c.photos_id = p.id 
         order by 
          c.id DESC) LastPhotoComment 
+2

arriba no es una función de MySQL – acorncom

Cuestiones relacionadas