Php & Sql

Likeun -  
 Utilisateur anonyme -
Bonjour,

Actuellement j'ai une base de donnée qui contient une table qui liste les photos ( appelons la table 'Photos') et une autre table qui liste les commentaires des photos ( appelons la table 'commentaire')

Je souhaite en une requête SQL afficher toutes les photos trier par commentaire

exemple :

table photos

A
B
C
D

Tables commentaires

A Commentaire 1(Idcommentaire:1)
A Commentaire 2(Idcommentaire:2)
A Commentaire 3(Idcommentaire:3)
B Commentaire 1(Idcommentaire:4)

J'aimerais qu'il me ressorte :

B ( car c'est la photo ou il y a eu le commentaire le plus récent )
A ( car c'est la photo ou il y a eu le commentaire le plus récent apres celle du B )
C ( car il n'y a pas eu de photo)
D ( car il n'y a pas eu de photo)

Je vous remercie d'avance de votre aide :)

2 réponses

  1. Utilisateur anonyme
     
    salut !

    Ou est ton critère de date?
    si ta table est du type

    TABLE PHOTO : 
    ID_PHOTP 
    LIB_PHOTO
    
    TABLE COMMENTAIRE
    ID_COMMENTAIRE
    ID_PHOTO
    LIB_COMMENTAIRE
    DATE


    tu peux faire une requete du type

    select PHOTO.LIB_PHOTO , COMMENTAIRE. LIB_COMMENTAIRE
    FROM PHOTO 
    join COMMENTAIRE on COMMENTAIRE.ID_PHOTO = PHOTO.id_PHOTO
    ORDER BY COMMENTAIRE.DATE
    
    
    0
  2. Likeun
     
    Merci nagashima de ta réponse.

    ___

    select PHOTO.LIB_PHOTO , COMMENTAIRE. LIB_COMMENTAIRE
    FROM PHOTO
    join COMMENTAIRE on COMMENTAIRE.ID_PHOTO = PHOTO.id_PHOTO
    ORDER BY COMMENTAIRE.DATE

    ___

    Je pense qu'avec la requête que tu m'as donné, je n'aurai que les photos qui as eu des commentaires. cela ne me sortira pas la photo C et la photo D.

    C'est pourquoi j'avais pensé à faire la même requête avec LEFT OUTER JOIN.

    En ce qui concerne les dates, je prend en compte la clef primaire de la table Commentaire. Plus l'id est haut plus il est récent.

    ___

    SELECT DISTINCT IdContenu_Albumsharing, Idalbumsharing , Cheminphotosharing , proprietairephotosharing ,Nomphotosharing,GPS FROM Contenu_Albumsharing LEFT OUTER JOIN Commentaires ON Contenu_Albumsharing.IdContenu_Albumsharing = Commentaires.Idphotoalbumsharing where Idalbumsharing='$_GET[Idalbumsharing]' ORDER BY Idcommentaire DESC
    ___

    Exemple reel :

    table Contenu_Albumsharing

    IDphoto idalbum photos
    1252 79 DSC02383
    1309 79 IMG_0803

    table Commentaires

    Idcommentaire Idphotoalbumsharing Commentaire
    272 1252 blabla
    270 1252 blabla
    269 1309 blabla
    268 1309 blabla

    Et actuellement avec la requette ci-dessus, il m'affiche tout de meme ma photo 1309 avant la 1252...
    0
    1. Utilisateur anonyme
       
      re !
      donc ca sera plutot un left join (tous les résultat de gauche + ceux de droite s'il existe), après j'utilise jamais le outter donc bon ^^

      et pour ordonner par id image :
      ... 
      ORDER BY photo.id_photo, COMMENTAIRE.DATE 
      

      => tu peux ordonner par autant de critères que tu veux (a confirmer mais j'ai jamais eu à faire + que 3), du plus pertinent au moins
      0