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 :

[Requete] Pb avec LEFT JOIN


Sujet :

PHP & Base de données

  1. #1
    000
    000 est déconnecté
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 36
    Points : 36
    Points
    36
    Par défaut [Requete] Pb avec LEFT JOIN
    Bonjour,

    J'aimerais avoir pour chaque mois le nombre de commande effectué.
    J'ai réalisé la requete suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    SELECT mois.numero, count( commande.id ) 
    FROM (
    mois
    LEFT JOIN commande ON mois.numero = MONTH( commande.date ) 
    )
    GROUP BY MONTH( commande.date )
    mais elle me renvoie ce resultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    numero  count( commande . id )  
    9               0 
    1               1 
    2               1 
    3               1 
    4               1 
    5              33 
    6              38 
    7               1 
    8               1
    alors que je veux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    numero  count( commande . id ) 
    12              0
    11              0
    10              0
    9               0 
    1               1 
    2               1 
    3               1 
    4               1 
    5              33 
    6              38 
    7               1 
    8               1
    Avez vous des idées ?

  2. #2
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    Salut,

    SELECT MONTH( commande.date ), count( commande.id )
    FROM commande
    GROUP BY MONTH( commande.date )
    Tout simplement,

    bbye

  3. #3
    000
    000 est déconnecté
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 36
    Points : 36
    Points
    36
    Par défaut
    Mais avec cette requete, s' il n'y a pas de commande pour un mois, j'ai pas les 12 mois avec le nombre de commande.

    En fait c'est pas exactement cette requete que je veux , je l'ai simplifié pour le forum.

    Est ce que LEFT JOIN fonctionne seulement avec des attributs des tables ?
    Peut on utliser des fonctions (MONTH() par exemple ) avec LEFT JOIN ?

  4. #4
    000
    000 est déconnecté
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 36
    Points : 36
    Points
    36
    Par défaut
    Bon j'ai réussi à avoir le resultat voulu mais la requete est très moche !!!

    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
    17
    18
    19
    20
    21
     
     
    (
    SELECT numero, count( montant ) 
    FROM mois, commande
    WHERE numero = MONTH( commande.date ) 
    GROUP BY MONTH( commande.date ) 
    )
    UNION (
     
    SELECT numero, 0
    FROM mois
    WHERE numero NOT 
    IN (
     
    SELECT numero
    FROM mois, commande
    WHERE numero = MONTH( commande.date ) 
    GROUP BY MONTH( commande.date ) 
    )
    )

  5. #5
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    Salut,

    Mais avec cette requete, s' il n'y a pas de commande pour un mois, j'ai pas les 12 mois avec le nombre de commande.
    Oui c'est vrai. Perso pour corriger cela j'avais utiliser PHP. Histoire de ne pas surcharger ma requete.


    Est ce que LEFT JOIN fonctionne seulement avec des attributs des tables ?
    Je n'ai pas compris ta question dsl :s
    Peut on utliser des fonctions (MONTH() par exemple ) avec LEFT JOIN ?
    Je n'ai jamais tester, mais la jointure peut se faire avec cette fonction surement.

    Qd à la requete que tu as fais, perso je n'aime pas non plus, mais je ne vois pas d'autre solutions en SQL.
    Encore une fois, à mon sens le plus simple, le plus performant aussi, serait de corriger cela avec PHP.

    bbye

  6. #6
    000
    000 est déconnecté
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 36
    Points : 36
    Points
    36
    Par défaut
    En fait, le probleme venait de mon GROUP BY, voici la solution:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    SELECT mois.numero AS mois, count( commande.id ) AS nb_cdes
    FROM mois
    LEFT JOIN commande ON mois.numero = MONTH( commande.date ) 
    GROUP BY mois.numero
    ORDER BY mois.numero

  7. #7
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    hmm je n'avait pas vu que tu avais une table mois...... fatigue quand tu me tiens

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

Discussions similaires

  1. Requete avec Left Join sous MySQL 4 et 5
    Par gpers dans le forum Requêtes
    Réponses: 3
    Dernier message: 11/05/2009, 18h04
  2. Requete interminable avec Left Join
    Par fevec dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 27/02/2008, 10h11
  3. Réponses: 3
    Dernier message: 06/06/2007, 18h45
  4. [Access] Requête avec LEFT JOIN et 3 tables
    Par estelledany dans le forum Langage SQL
    Réponses: 1
    Dernier message: 07/06/2006, 13h27
  5. requete avec left join et group by
    Par slc dans le forum Requêtes
    Réponses: 2
    Dernier message: 14/09/2004, 18h03

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