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 :

Construction d'une requête SQL avec jointure


Sujet :

Requêtes MySQL

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Construction d'une requête SQL avec jointure
    Bonjour, je n'ai plus touché au sql depuis pas mal d'années, et je ne sais plus comment construire la requête correspondant à mon problème, je pense que ce sera un jeu d'enfant pour vous et un bon exercice pour d'autres...

    Voici mes 3 tables très simples :

    On a une table de joueurs (gamers, clé ID), une table de parties (Games, clé ID), et une table de résultats (Results, clé ID, jointure GID et PID).

    Le but est d'afficher les résultats du classement comme sur l'image suivante :


    Je ne sais pas comment faire, car on ne connait pas non plus à l'avance le nombre de parties (#1, #2, #3 etc...)

    J'ai fait ceci, mais je n'obtiens pas le total ni le classement horizontal souhaité !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT pseudo, name, pos, pts
    FROM resultats R 
    left join gamers P on P.id = R.pid 
    left join games G on G.id = R.gid
    order by date, pts desc
    pseudo nom pos pts
    Berthy29 GPL #1 1 300
    Didiou GPL #1 2 200
    Noisette GPL #1 3 150
    Dorig GPL #1 4 120
    Anne GPL #1 5 100
    Berthy29 GPL #2 1 300
    Didiou GPL #2 2 200
    Noisette GPL #2 3 150
    Anne GPL #2 4 120
    Dorig GPL #2 5 100
    Merci pour votre aide

    ps: dans la table results, j'ai oublié de mettre le champ pos (pour position)

  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 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 034
    Points : 23 779
    Points
    23 779
    Par défaut
    Bonjour,

    Ce n'est pas en SQL que tu obtiendras ce joli tableau .
    En effet, ce que tu demandes, c'est de la cosmétique, et le SQL n'est pas là pour ça.
    Notamment, pour obtenir les parties en colonnes, il faut faire autant de jointures qu'il y a de parties. Or, comme tu l'as dit, tu ne connais pas à l'avance le nombre de parties. Donc, ça n'est pas possible...

    La requête que tu as lancée est correcte, et il faut ensuite faire la mise en page par le langage de programmation que tu utilises (par exemple PHP).

    Pour le total, tu as 2 solutions : soit tu le calcules au fur et à mesure que tu parcours les résultats de la requête dans ton langage de programmation, soit tu relances une requête avec un SUM dedans...

    ced

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Ca n'existe pas les requetes sql avec des résultats en array ?
    (genre select champs as C[] from table ...

  4. #4
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Saluton,
    Citation Envoyé par Didiou35 Voir le message
    Ca n'existe pas les requetes sql avec des résultats en array ?
    (genre select champs as C[] from table ...
    Non.

    La seule chose qui s'en approche en MySQL c'est GROUP_CONCAT que tu peux ensuite exploiter en PHP (par exemple) avec split() ou explode().

Discussions similaires

  1. Construction d'une requête SQL avec un TEdit
    Par aouiche dans le forum Bases de données
    Réponses: 3
    Dernier message: 08/08/2009, 14h10
  2. [Access] Problème dans une requête SQL avec INNER JOIN ?
    Par bds2006 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/06/2006, 10h57
  3. Problème dans une requête SQL avec AS et ON ?
    Par bds2006 dans le forum Bases de données
    Réponses: 9
    Dernier message: 26/06/2006, 15h25
  4. [MySQL] concaténer une requête sql avec condition
    Par maliak dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 10/02/2006, 12h01
  5. Une requête SQl avec concaténation
    Par Bobybx dans le forum Langage SQL
    Réponses: 2
    Dernier message: 19/01/2006, 10h18

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