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

Requêtes MySQL Discussion :

requete selection jointure


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 81
    Par défaut requete selection jointure
    Bonjour,
    je n'arrive pas à créer une requete qui me donne le bon résultat.

    1ère table :
    nom :couleur
    ID | libelle
    1 | BLEU
    2 | ROUGE
    3 | VERT

    2ème table :
    nom : fabrication
    semaine | coloris
    30 | 1
    30 | 1
    30 | 2
    31 | 1
    31 | 3

    je voudrais avoir comme résultat le nombre de coloris pour la semaine 30, y compris ceux qui sont à 0.
    ce qui me donnerait :

    libelle | semaine | NbColoris
    BLEU | 30 | 2
    ROUGE| 30 | 1
    VERT | 30 | 0

    ma requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT c.libelle, f.semaine, COUNT(f.coloris) AS NbColoris
    FROM couleur AS c
    LEFT JOIN fabrication AS f ON f.coloris=c.ID
    WHERE f.semaine = 30
    GROUP BY f.coloris
    donne :
    libelle | semaine | NbColoris
    BLEU | 30 | 2
    ROUGE| 30 | 1

    Je n'arrive pas à afficher les résultats vides, ici la ligne VERT.

    quelqu'un aurait la solution?
    merci d'avance.

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 059
    Par défaut
    Bonjour,

    Essaie avec la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT c.libelle, f.semaine, COUNT(coalesce(f.coloris, 0)) AS NbColoris
    FROM couleur AS c
    LEFT JOIN fabrication AS f ON f.coloris=c.ID
    WHERE f.semaine = 30
    GROUP BY f.coloris
    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 81
    Par défaut
    ca ne fonctionne pas non plus.
    j'utilise la version 5.0.27 de MySQL.

  4. #4
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 059
    Par défaut
    Quel est le message d'erreur (si message d'erreur il y a) ?
    Au passage, il manque f.semaine dans le GROUP BY...

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 81
    Par défaut
    je n'ai pas de message d'erreur qui s'affiche, le requete s'execute bien.
    mais je n'ai toujours pas la ligne VERT | 30 | 0.

  6. #6
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 059
    Par défaut
    Bon, quand on teste, c'est quand même plus simple...

    Voilà la requête qui doit faire ce que tu demandes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select c.libelle, coalesce(f.semaine, 30) as semaine, count(f.coloris) as nbColoris
    from couleur c
    left join fabrication f on c.ID = f.coloris and f.semaine = 30
    group by c.libelle, coalesce(f.semaine, 30)
    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 81
    Par défaut
    c'est bon, c'est ce que je voulais!
    j'ai regardé dans la doc à quoi coalesce() correspond mais je n'ai pas bien saisi.
    j'ai vu que sans cette fonction, la valeur NULL est affichée.
    peux-tu m'en dire un peu plus?
    un grand merci de m'avoir aidé.

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

Discussions similaires

  1. Requete Select jointure externe.
    Par rednight dans le forum Langage SQL
    Réponses: 6
    Dernier message: 28/08/2009, 17h36
  2. Requete select : jointure avec champs null
    Par Tidus159 dans le forum Langage SQL
    Réponses: 13
    Dernier message: 06/06/2008, 13h31
  3. Requete SELECT avec jointures
    Par escteban dans le forum Requêtes
    Réponses: 10
    Dernier message: 18/04/2007, 12h16
  4. problemes de performances avec les requetes select
    Par berry dans le forum Requêtes
    Réponses: 3
    Dernier message: 10/07/2003, 13h39
  5. requete SELECT avec un nombre constant
    Par gurumeditation dans le forum Requêtes
    Réponses: 3
    Dernier message: 04/07/2003, 20h04

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