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 :

Count et 0 [Débutant(e)]


Sujet :

Langage SQL

  1. #21
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Au temps pour moi, je venais de m'en apercevoir et de corriger mon post.
    Donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT DOMICILE_OU_EXTERIEUR, NOM_CLUB, COUNT (*) AS BUT
    FROM CLUB 
    INNER JOIN (
      JOUER INNER JOIN (
         MATCH LEFT JOIN MARQUE ON MARQUE.ID_MATCH = MATCH.ID_MATCH)  
      ON JOUER.ID_MATCH = MATCH.ID_MATCH) 
    ON CLUB.ID_CLUB = JOUER.ID_CLUB
    WHERE MATCH.ID_MATCH = [Entrez un idmatch]
    GROUP BY DOMICILE_OU_EXTERIEUR, NOM_CLUB
    Roland

  2. #22
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 37
    Points : 10
    Points
    10
    Par défaut
    OK merci encore, maintenant access accepte ma requête, mais il reste une erreur : je demande le score du match 1, dans ma table marque j'ai 4 buts pour une équipe, et 3 pour l'autre, et au lieu d'avoir EquipeA 4 EquipeB 3, j'ai EquipeA 7 EquipeB 7, donc pour tout les matchs, j'ai le total de but du match pour chaque équipe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    SELECT DOMICILE_OU_EXTERIEUR, NOM_CLUB, COUNT(MARQUE.NUMÉRO_LICENCE) AS BUT
    FROM CLUB INNER JOIN (JOUER INNER JOIN ([MATCH] LEFT JOIN MARQUE ON MARQUE.ID_MATCH=MATCH.ID_MATCH) ON JOUER.ID_MATCH=MATCH.ID_MATCH) ON JOUER.ID_CLUB=CLUB.ID_CLUB
    WHERE MATCH.ID_MATCH=[Entrez un idmatch]
    GROUP BY DOMICILE_OU_EXTERIEUR, NOM_CLUB;

  3. #23
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Oui, bien sûr Qu'est-ce qui dans MARQUE, indique que tel but a été marqué par tel Club ?
    Roland

  4. #24
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 37
    Points : 10
    Points
    10
    Par défaut
    Le numéro de licence du joueur qui marque, qui appartient à un et un seul club

  5. #25
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 37
    Points : 10
    Points
    10
    Par défaut
    JOUEUR.NUMÉRO_LICENCE=MARQUE.NUMÉRO_LICENCE
    JOUEUR.ID_CLUB=CLUB.ID_CLUB
    Ptet qu'il faut rajouter ces jointures ?

  6. #26
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 37
    Points : 10
    Points
    10
    Par défaut
    J'arrive pas à les caser toute façon

  7. #27
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Oui, ça complique les choses, et il vaut mieux s'y prendre autrement. En gros, on retrouve les deux clubs qui ont joué le match, puis tous les buts marqués par les joueurs de ces clubs (quel que soit le match), et on filtre sur le match en question.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT DOMICILE_OU_EXTERIEUR, NOM_CLUB, COUNT(*) AS BUT
    FROM JOUER 
    INNER JOIN 
       (CLUB LEFT JOIN 
          (JOUEUR INNER JOIN MARQUE
          ON MARQUE.NUMÉRO_LICENCE = JOUEUR.NUMÉRO_LICENCE)
       ON CLUB.ID_CLUB = JOUEUR .ID_CLUB)
    ON JOUER.ID_CLUB = CLUB.ID_CLUB
    WHERE JOUER.ID_MATCH = [Entrez un idmatch]
    AND MARQUE.ID_MATCH = JOUER.ID_MATCH
    GROUP BY DOMICILE_OU_EXTERIEUR, NOM_CLUB
    Je pense que ça devrait marcher.
    Roland

  8. #28
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 37
    Points : 10
    Points
    10
    Par défaut
    Expression de jointure non supportée

    Merci beaucoup quand même

    Si t'as d'autres idées.. faut absolument que ça marche

  9. #29
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Et en remplaçant le 1er INNER par un LEFT (de toute façon, ça ne changera rien au résultat).
    Roland

  10. #30
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 37
    Points : 10
    Points
    10
    Par défaut
    Idem

  11. #31
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 37
    Points : 10
    Points
    10
    Par défaut
    Vous pouvez également relier plusieurs clauses ON dans une instruction JOIN, à l'aide de la syntaxe suivante :

    SELECT champs
    FROM table1 INNER JOIN table2
    ON table1.champ1 oprcomp table2.champ1 AND
    ON table1.champ2 oprcomp table2.champ2) OR
    ON table1.champ3 oprcomp table2.champ3)];

    Vous pouvez également imbriquer des instructions JOIN à l'aide de la syntaxe suivante :

    SELECT champs
    FROM table1 INNER JOIN
    (table2 INNER JOIN [( ]table3
    [INNER JOIN [( ]tablex [INNER JOIN ...)]
    ON table3.champ3 oprcomp tablex.champx)]
    ON table2.champ2 oprcomp table3.champ3)
    ON table1.champ1 oprcomp table2.champ2;

    Une jointure LEFT JOIN ou RIGHT JOIN peut être imbriquée dans une jointure INNER JOIN mais il est impossible d'imbriquer une jointure INNER JOIN dans une jointure LEFT JOIN ou RIGHT JOIN.
    J'ai trouvé ça mais j'arrive pas trop à l'adapter.. C'est rageant de se sentir tout proche d'un problème qui dure 4 jours, mais de ne pas trouver la solution

  12. #32
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    OK, Access n'est pas caractériel, mais ça y ressemble
    Et ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT DOMICILE_OU_EXTERIEUR, NOM_CLUB, COUNT(*) AS BUT
    FROM JOUER 
    INNER JOIN 
       (CLUB LEFT JOIN 
          (JOUEUR RIGHT JOIN MARQUE
          ON MARQUE.NUMÉRO_LICENCE = JOUEUR.NUMÉRO_LICENCE)
       ON CLUB.ID_CLUB = JOUEUR .ID_CLUB)
    ON JOUER.ID_CLUB = CLUB.ID_CLUB
    WHERE JOUER.ID_MATCH = [Entrez un idmatch]
    AND MARQUE.ID_MATCH = JOUER.ID_MATCH
    GROUP BY DOMICILE_OU_EXTERIEUR, NOM_CLUB
    1°: Ca passe ?
    2°: Ca donne le bon résultat ?
    Roland

  13. #33
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 37
    Points : 10
    Points
    10
    Par défaut
    1) Non, expression de jointure non supportée

    J'y crois encore

    Merci pour le temps que tu m'accordes

  14. #34
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Une dernière idée pour aujourd'hui
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT DOMICILE_OU_EXTERIEUR, NOM_CLUB, COUNT(*) AS BUT
    FROM JOUER 
    INNER JOIN 
       (CLUB INNER JOIN 
          (JOUEUR LEFT JOIN MARQUE
          ON MARQUE.NUMÉRO_LICENCE = JOUEUR.NUMÉRO_LICENCE)
       ON CLUB.ID_CLUB = JOUEUR .ID_CLUB)
    ON JOUER.ID_CLUB = CLUB.ID_CLUB
    WHERE JOUER.ID_MATCH = [Entrez un idmatch]
    AND MARQUE.ID_MATCH = JOUER.ID_MATCH
    AND MARQUE.NUMÉRO_LICENCE IS NOT NULL
    GROUP BY DOMICILE_OU_EXTERIEUR, NOM_CLUB
    Roland

  15. #35
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 37
    Points : 10
    Points
    10
    Par défaut
    Ya du progrès

    Alors cette requête est acceptée, mais elle m'affiche toujours pas les équipes qui ont mis 0 but dans un match En fait elle fait la même chose que la requete de mon premier post

    Merci encore T'as pas une dernière idée avant demain ?

  16. #36
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    AND MARQUE.ID_MATCH = JOUER.ID_MATCH
    AND MARQUE.NUMÉRO_LICENCE IS NOT NULL
    ça annule tout l'intérêt de la jointure externe, effectivement...

    EDIT : dans ce raisonnement, on a un problème.
    Si on fait LEFT JOIN entre joueur et marque, tous les joueurs, même ceux qui n'ont pas marqué vont être comptés.
    En ajoutant la condition IS NOT NULL, on n'a plus que ceux qui ont marqué...
    Je pense que la jointure externe doit finalement bien se trouver au niveau du club.
    J'essairai de t'écrire la requette demain, si je ne me fais pas devancer par rsc

    (c'est ma photo)
    Paku, Paku !
    Pour les jeunes incultes : non, je ne suis pas un pokémon...

    Le pacblog : http://pacmann.over-blog.com/

  17. #37
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 37
    Points : 10
    Points
    10
    Par défaut
    Ok ça marche, merci

    Mais si on pas la réponse demain je suis mal si quelqu'un à une idée ce soir, je reste dans le coin

    Juste comme ça je sais pas si j'ai été clair, dans ma table marque on trouve que les joueurs qui ont marqués puisque c'est une liste de but.. si vous avez besoin d'info sur la structure de mes tables, n'hésitez pas

  18. #38
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Salut !

    Bon, en y réfléchissant, il suffit peut être de bien compter.
    Je crois que quand tu count une colonne, tu ne prends que les non NULLs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SELECT DOMICILE_OU_EXTERIEUR, NOM_CLUB, COUNT(MARQUE.ID_MATCH) AS BUT
    FROM JOUER 
    INNER JOIN 
       (CLUB INNER JOIN 
          (JOUEUR LEFT JOIN MARQUE
          ON MARQUE.NUMÉRO_LICENCE = JOUEUR.NUMÉRO_LICENCE)
       ON CLUB.ID_CLUB = JOUEUR .ID_CLUB)
    ON JOUER.ID_CLUB = CLUB.ID_CLUB
    WHERE JOUER.ID_MATCH = [Entrez un idmatch]
    AND (MARQUE.ID_MATCH = JOUER.ID_MATCH OR MARQUE.ID_MATCH IS NULL)
    GROUP BY DOMICILE_OU_EXTERIEUR, NOM_CLUB

    (c'est ma photo)
    Paku, Paku !
    Pour les jeunes incultes : non, je ne suis pas un pokémon...

    Le pacblog : http://pacmann.over-blog.com/

  19. #39
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 37
    Points : 10
    Points
    10
    Par défaut
    YEEEEEEEEEEEEEEAAAAAAAAAAAAAHHHHHHHHHH


    Ca marche parfaitement Merci à vous 2



  20. #40
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Roland

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. UNION et COUNT(*)
    Par Goldust dans le forum Langage SQL
    Réponses: 2
    Dernier message: 08/08/2003, 09h30
  2. limiter le résultat retourné par le count
    Par SuperFoustan dans le forum Langage SQL
    Réponses: 8
    Dernier message: 05/08/2003, 12h10
  3. Problème dans requête avec count()
    Par BadFox dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/07/2003, 18h02
  4. Multiple Count
    Par Antichoc dans le forum Langage SQL
    Réponses: 2
    Dernier message: 31/03/2003, 11h19
  5. Compter le nombre ligne listée (COUNT) ?
    Par StouffR dans le forum Langage SQL
    Réponses: 7
    Dernier message: 02/09/2002, 09h41

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