IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Problème de jointure


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 109
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 109
    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

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Par défaut
    oui, en effet, il faut qu'il soit ajouter dans ta table.... mais c'est pas top intégriter...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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...

Discussions similaires

  1. Problème de jointure de tables
    Par AurelBUD dans le forum Langage SQL
    Réponses: 6
    Dernier message: 20/04/2005, 16h27
  2. Probléme de jointure
    Par Ajrarn dans le forum Langage SQL
    Réponses: 14
    Dernier message: 24/02/2005, 14h57
  3. Vraisemblable problème de jointure
    Par pimousse76 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/02/2005, 15h34
  4. [MS Access] Problème de jointure
    Par Erakis dans le forum Langage SQL
    Réponses: 3
    Dernier message: 07/02/2005, 21h15
  5. Problème de jointure ?!
    Par ebaynaud dans le forum Langage SQL
    Réponses: 8
    Dernier message: 03/11/2004, 11h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo