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 :

MySQL requête double et à tous


Sujet :

Requêtes MySQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 4
    Points : 4
    Points
    4
    Par défaut MySQL requête double et à tous
    Bonjour,

    Je débute en SQL.

    J'ai une base avec les tables Joueur (IdJoueur ; NomJoueur), Enregistrement (IdJoueur, NuméroEnr), Joué (IdTournoi et NuméroEnr) et Tournoi (IdTournoi, NomTournoi).

    J'aimerais faire deux choses :
    1° retourner les noms de joueurs qui ont participé à quatre tournois dont on connaît les noms disons U,V,W et X de la base Tournoi.
    2° retourner les noms de joueurs qui ont participé à tous les tournois connus de cette base.

    Pouvez-vous m'aider svp?

    J'ai commencé comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    select distinct x.NomJoueur
    from Joueur as x, Enregistrement as y,Joué as z,Tournoi as w
    where x.IdJoueur=y.IdJoueur
    and y.NuméroEnr=z.NuméroEnr
    and z.IdTournoi=w.IdTournoi
    and w.NomTournoi='X'
    et là je suis bloqué

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonjour,


    il va falloir passer par des ensembles http://sqlpro.developpez.com/cours/sqlaz/ensembles/

    La requete type pour vérifier qu'un groupement de ligne correspond à une condition donnée est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    select col_groupement
    from ma_table
    ...jointures....
    where ma_cond in ('x', 'y')
    group by col_groupement
    having count(distinct ma_cond) = 2

    Pour le 2eme points il faudra aller un peu plus loin dans la logique : http://sqlpro.developpez.com/cours/divrelationnelle/#L9

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Salut punkoff, merci pour votre aide!

    Je crois avoir trouvé la requête 1°:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    select distinct x.NomJoueur
    from Joueur as x, Enregistrement as y,Joué as z,Tournoi as w
    where x.IdJoueur=y.IdJoueur
    and y.NuméroEnr=z.NuméroEnr
    and z.IdTournoi=w.IdTournoi
    and w.NomTournoi in ('U','V','W','X')
    group by x.NomJoueur
    having count(distinct w.NomTournoi)=4
    Mais à quoi sert le distinct de la dernière ligne? Si je l'enlève j'obtiens moins de résultats mais je ne vois pas trop pourquoi...

    Je bosse la deuxième...

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    rajoutez un count(*) et un count(distinct nomtournoi) dans votre clause select puis regardez les données associées aux joueurs où il y a une différence.


    Sinon votre distinct dans la clause select ne sert à rien, vous faites un group by déjà

Discussions similaires

  1. [MySQL]Requête select avec double classement
    Par GyZmoO dans le forum Requêtes
    Réponses: 8
    Dernier message: 09/10/2009, 12h01
  2. [Mysql] requête multi-criteres
    Par Nick_59 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 20/04/2006, 15h43
  3. requète double en 1 fois
    Par Yoshio dans le forum Débuter
    Réponses: 10
    Dernier message: 16/01/2006, 00h37
  4. [php-mysql] requête qui ne marche pas....
    Par sanosuke85 dans le forum Requêtes
    Réponses: 1
    Dernier message: 09/01/2006, 18h18
  5. [Requête] Requête double, "OU" entre requêtes.
    Par muphin dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 21/06/2005, 16h04

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