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
 
Date d'inscription: juillet 2009
Messages: 56
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 :
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 :
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
Vieux 26/01/2010, 18h31   #2
Nouveau membre du Club
 
Date d'inscription: janvier 2008
Messages: 79
Par défaut

Avec ta fonction d'agrégation, le group by me parait erroné. Essaie en faisant un GROUP BY sur le champ albumId...

Code :
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
Vieux 26/01/2010, 18h44   #3
Nouveau membre du Club
 
Date d'inscription: juillet 2009
Messages: 56
Par défaut

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
Vieux 26/01/2010, 19h01   #4
Nouveau membre du Club
 
Date d'inscription: janvier 2008
Messages: 79
Par défaut

oui, en effet, il faut qu'il soit ajouter dans ta table.... mais c'est pas top intégriter...

Code :
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
NEWS PHPFAQ PHPCours PHPSources PHPLivres PHPScripts PHPOutils PHPComparatifsZend Framework

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 10h15.


Vos questions techniques : forum d'entraide PHP - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.