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

Langage SQL Discussion :

aide sur requete mysql


Sujet :

Langage SQL

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 295
    Points : 135
    Points
    135
    Par défaut aide sur requete mysql
    bonjour je bloque un peu en sql
    j'ai une table marque et annonce et je voudrais en fait afficher le nombre d'annonce par marque meme si la marque ne possede pas d'annonce
    exemple
    Nokia 3
    Sagem 0
    ma requete n'affiche actuellement que les marque avec leur nombre qui possede une annonce
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select marque, count(*) from annonce, marque where marque.idmarque=annonce.idmarque 
    group by marque
    je ne vois pas ou se situe le pb merci de votre aide

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Renseigne toi sur les jointures externes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT marque, count(*) 
    FROM annonce LEFT OUTER JOIN marque USING(idmarque)
    GROUP BY marque

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 295
    Points : 135
    Points
    135
    Par défaut
    merci j'ai teste c'est exactement la meme chose

  4. #4
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Je passe en coup de vent, je n'ai rien testé, mais un Count(*) ne me paraît pas pertinent ici, j'aurais remplacé par un count(annonce.idmarque), non ?

  5. #5
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Ooops, je me suis trompé dans l'ordre et la remarque de Xo est justifiée, mais il faut un peu modifier la syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT marque, count(m.IdMarque) 
    FROM marque m LEFT OUTER JOIN annonce a ON m.IdMarque = a.IdMarque
    GROUP BY marque

  6. #6
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Citation Envoyé par Médiat
    Renseigne toi sur les jointures externes
    La solution est là, digger, même si Médiat s'est trompé dans sa proposition de requête (ça lui arrive une fois tous les ... pas souvent en tout cas ).

    Si tu t'étais effectivemment renseigné sur les jointures externes, tu aurais remplacé LEFT par RIGHT, et tu aurais déjà ton resultat ...

    Voila le TESTCASE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    CREATE TABLE Marque (idMarque NUMBER (10),
                         Marque   VARCHAR2 (32));
     
    CREATE TABLE Annonce (idAnnonce Number(10),
                          idMarque  Number (10),
                          Descriptif VarChar2 (32));
     
    INSERT INTO Marque (idMarque, Marque) VALUES (1, 'NOKIA');
    INSERT INTO Marque (idMarque, Marque) VALUES (2, 'SAGEM');
     
    INSERT INTO Annonce (idAnnonce, idMarque, Descriptif) VALUES (1, 1, 'Blabla 1');
     
    COMMIT;
    Et la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Marque, COUNT (Descriptif)
    FROM annonce RIGHT OUTER JOIN marque USING(idmarque)
    GROUP BY marque;
    En passant, teste cette solution avec un COUNT (*), tu verras que ton résultat est faux ! Ceci est du à la présence de plusieurs tables dans la requête ...

    [Edit] Grillé [/Edit] ...

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 295
    Points : 135
    Points
    135
    Par défaut
    merci pour votre aide mais en executant cette requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT marque, count(m.IdMarque) 
    FROM marque m LEFT OUTER JOIN annonce a ON m.IdMarque = a.IdMarque 
    GROUP BY marque
    il m'affiche bien toutes les marques meme sans annonces mais avec un 1 à la place du 0
    il affiche une annonce meme pour les marques qui n'ont pas d'annonces

  8. #8
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT marque, count(a.IdMarque) 
    FROM marque m LEFT OUTER JOIN annonce a ON m.IdMarque = a.IdMarque 
    GROUP BY marque

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 295
    Points : 135
    Points
    135
    Par défaut merci
    merci ca fonctionne nikel

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

Discussions similaires

  1. [mysql] Aide sur requete (date)
    Par cassy dans le forum Langage SQL
    Réponses: 4
    Dernier message: 29/10/2007, 09h49
  2. Aide sur requete basique
    Par marcomontreal dans le forum Access
    Réponses: 3
    Dernier message: 10/04/2006, 17h47
  3. Aide sur requete access
    Par Al soltani dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 02/03/2006, 11h58
  4. Besoin d'aide sur requetes imbriquées simples
    Par Kyti dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/03/2006, 10h52
  5. Aide sur requete PHP vers MySQL
    Par pounie dans le forum Requêtes
    Réponses: 4
    Dernier message: 19/02/2006, 15h12

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