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 :

[PDO] LEFT JOIN et résultat impossible [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2007
    Messages : 92
    Par défaut [PDO] LEFT JOIN et résultat impossible
    Hello,

    J'ai une petite requête qui me pose problème :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT a.id, a.username, a.firstname, a.lastname, a.email, a.language, count(b.id) AS unread, count(c.id) AS draft 
    FROM users a 
    LEFT JOIN mail_inbox b 
       ON a.id = b.recipient AND b.reed = 0 
    LEFT JOIN mail_outbox c 
       ON a.id = c.uid AND c.draft = 1 
    WHERE a.username = :name 
    AND a.password = :pw 
    LIMIT 1

    Le souci est au niveau de "unread" et "draft". Le résultat donné est le même pour les 2, soit celui de "unread". Donc, au lieu d'avoir "unread" = 100 et "draft" = 2, j'ai "unread" = 100 et "draft" = 100....

    Je vois vraiment pas où est le problème d'autant qu'il n'y a pas la moindre subtilité dans la requête... Enfin, bref...

    Une idée?

    Merci d'avance!

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2007
    Messages : 92
    Par défaut
    Il semblerait qu'il ne soit pas possible d'effectuer 2 counts distincts dans la même requête sans utilisation d'une sous-requête... Malheureusement... Si vous avez le même problème :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT a.id, a.username, a.firstname, a.lastname, a.email, a.language, b.unread, c.draft 
       FROM users a 
          LEFT JOIN (SELECT x.recipient, count(x.id) AS unread FROM mail_inbox x WHERE x.reed = 0) b ON b.recipient = a.id 
          LEFT JOIN (SELECT y.uid, count(y.id) AS draft FROM mail_outbox y WHERE y.draft = 1) c ON c.uid = a.id 
       WHERE a.username = :name 
       AND a.password = :pw 
    LIMIT 1

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Left join avec les résultats des trois requêtes
    Par ghatfan99 dans le forum Débuter
    Réponses: 2
    Dernier message: 01/07/2011, 10h28
  2. Limiter un LEFT JOIN à un seul résultat
    Par bigsister dans le forum Requêtes
    Réponses: 30
    Dernier message: 12/01/2011, 14h02
  3. un left join ne me donne pas le résultat attendu
    Par kikidrome dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 05/12/2008, 16h58
  4. Non coincident MySQL (Left Join)
    Par Remiguel dans le forum Requêtes
    Réponses: 6
    Dernier message: 03/11/2003, 21h25
  5. Export d'une vue avec LEFT JOIN
    Par schnourf dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 22/05/2003, 13h57

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