Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 26/01/2010, 18h21   #1
Nouveau Membre du Club
 
Inscription : juillet 2009
Messages : 110
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 110
Points : 37
Points : 37
Par défaut Problème de jointure

Bonjour à tous,

je coince sur un soucis SQL.

Je travaille sur un site où les membres peuvent ajouter des photos.
Leurs photos peuvent être placé dans des albums photos (mais pas obligatoirement)

Je souhaiterai afficher le listing de leur album photo avec le nombre de photos qu'ils ont dans chaque album (ainsi que le nombre de photos qu'ils ont mais qui n'appartient pas à un album).

exemple : Marc a 3 photos dans son album "familles", 2 photos dans son album "amis" et 7 photos qui n'appartienent pas à un album.

Le soucis est que je n'arrive pas avec ma query (aussi bien en mettant LEFT join, INNER join ou RIGHT join) d'afficher le nombre de photos qui n'appartient pas à un album photos.
(bon j'espère que j'ai été claire :-/)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
TABLE SQL
 
MEMBRE :
id
pseudo
 
ALBUM :
id
membreId (pour savoir à qui appartient l'album)
nom
 
PHOTOS :
id
albumId (pour savoir à quel album appartient la photo, si elle n'appartient à aucun album alors le champ vaut 0)
membreId (pour savoir à qui appartient la photo)
nom
Code :
1
2
3
4
5
6
SELECT album.id, album.nom, COUNT(album.id) AS nbr
FROM album
INNER JOIN photos ON photos.albumId = album.id
WHERE album.membreId = 1000
GROUP BY album.id
Le résultat que j'ai est (album.id) - (album.nom) - (nbr) :

3 - famille - 7
5 - amis - 8

mais ce membre a 6 photos qui n'appartiennent à aucun album, mais je n'arrive pas à l'intégrer dans ma query.

J'espère à noueau que je suis claire, merci à tous
gianni7033 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2010, 18h31   #2
Membre confirmé
 
Homme
Ingénieur systèmes et réseaux
Inscription : janvier 2008
Messages : 218
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux

Informations forums :
Inscription : janvier 2008
Messages : 218
Points : 228
Points : 228
Avec ta fonction d'agrégation, le group by me parait erroné. Essaie en faisant un GROUP BY sur le champ albumId...

Code :
1
2
3
4
5
SELECT album.id, album.nom, COUNT(album.id) AS nbr
FROM album
INNER JOIN photos ON photos.albumId = album.id
WHERE album.membreId = 1000
GROUP BY photos.albumId
Et dis nous si cela fonctionne.

Cordialement,
Patouche
patouche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2010, 18h44   #3
Nouveau Membre du Club
 
Inscription : juillet 2009
Messages : 110
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 110
Points : 37
Points : 37
Malheureusement ça ne change pas.

En y réfléchissant, je pense que c'est parce que le record avec l'ID 0 n'est pas ajouté dans la table album :-/

je vais l'ajouter et retester
gianni7033 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2010, 19h01   #4
Membre confirmé
 
Homme
Ingénieur systèmes et réseaux
Inscription : janvier 2008
Messages : 218
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux

Informations forums :
Inscription : janvier 2008
Messages : 218
Points : 228
Points : 228
oui, en effet, il faut qu'il soit ajouter dans ta table.... mais c'est pas top intégriter...

Code :
1
2
3
4
5
SELECT album.id, album.nom, COUNT(album.id) AS nbr
FROM album
INNER JOIN photos ON photos.albumId = album.id OR photos.albumId = 0
WHERE album.membreId = 1000
GROUP BY photos.albumId
Ca pourrrait marcher... mais à toi de tester...
patouche est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 01h12.


 
 
 
 
Partenaires

Hébergement Web