Php & Sql

Fermé
Likeun - 21 mars 2013 à 14:00
 Utilisateur anonyme - 21 mars 2013 à 17:02
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 :)

A voir également:

2 réponses

Utilisateur anonyme
21 mars 2013 à 15:09
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
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
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