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 et php] requêtes imbriquées


Sujet :

Requêtes MySQL

  1. #1
    Membre habitué Avatar de php_de_travers
    Inscrit en
    Juin 2004
    Messages
    460
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 460
    Points : 190
    Points
    190
    Par défaut [mysql et php] requêtes imbriquées
    Sur les conseils d'un abonné au forum php, je repose ma question sur ce forum.
    --------------------------------

    Bonjour,

    comment bâtir une requête SQL afin qu'apparaisse une liste de ce type :

    Equipe 1
    - jacques
    - bernard
    - robert

    Equipe 2
    - olivier
    - henri

    NB : ce qui m'importe est de bien faire apparaître le nom de l'équipe, suivi du nom des joueurs et cela pour chacune des équipes.
    Si c'est possible...

    Pour info, les enregistrements sont du type

    id| equipe | prenom
    -------------------------
    1 | Equipe 1 | jacques
    2 | Equipe 1 | robert
    3 | Equipe 2 | henri
    4 | Equipe 1 | bernard

    Par avance, merci de votre aide

  2. #2
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 30
    Points : 28
    Points
    28
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select id,equipe,prenom from <nomtable> group by equipe
    ou alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select id,equipe,GROUP_CONCAT(prenom) from <nomtable> group by equipe

  3. #3
    Membre habitué Avatar de php_de_travers
    Inscrit en
    Juin 2004
    Messages
    460
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 460
    Points : 190
    Points
    190
    Par défaut
    Ok, merci.

    Mais comment afficher les résultats de la requête pour bien lister de la manière suivante, si cela est possible ?

    Equipe 1
    - jacques
    - bernard
    - robert

    Equipe 2
    - olivier
    - henri

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 30
    Points : 28
    Points
    28
    Par défaut
    Tu ne pourra pas faire de présentation sous SQL .

  5. #5
    Membre habitué Avatar de php_de_travers
    Inscrit en
    Juin 2004
    Messages
    460
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 460
    Points : 190
    Points
    190
    Par défaut
    Citation Envoyé par kilanepa
    Tu ne pourra pas faire de présentation sous SQL .
    La solution n'est-elle pas de faire des requêtes imbriquées pour extraire le nom de l'équipe puis le nom des joueurs de cette équipe par une itération ?

  6. #6
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 414
    Points : 671
    Points
    671
    Par défaut
    le group by ne sert que lorsqu'on effectue des opérations sur des colonnes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select id,equipe,prenom from <nomtable> group by equipe
    Donc dans cette requete le group by ne sert absolument à rien !

    Si on avait une requete du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select champ, sum(points) from matable group by champ;
    Là le group by est nécessaire, on groupe par champ pour faire la somme des points pour chaque valeur de champ

    Effectivement, on ne fait pas de présentation avec SQL, on récupère des données.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select id,equipe,prenom from nomtable order by equipe;
    Va te ramener les infos classées par equipe.
    Tu auras tous les membres de equipe 1, puis tous les membres de equipe 2, etc...

  7. #7
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    +1, ce genre de traitement cosmétique est à bannir en SQL. C'est le rôle de l'applicatif (en l'occurrence PHP) de mettre en forme les données.
    Pensez au bouton

  8. #8
    Membre habitué Avatar de php_de_travers
    Inscrit en
    Juin 2004
    Messages
    460
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 460
    Points : 190
    Points
    190
    Par défaut
    Citation Envoyé par Maximilian
    +1, ce genre de traitement cosmétique est à bannir en SQL. C'est le rôle de l'applicatif (en l'occurrence PHP) de mettre en forme les données.
    Et voilà donc ma solution : (pour une fois, c'est moi qui la trouve !)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    $ConnexionMysql = mysql_connect($host,$user,$password);
    if ($ConnexionMysql == true)
    {
    $sql = "SELECT DISTINCT equipe FROM $table ORDER BY equipe";
    $Resultat=mysql_db_query ($db, $sql);
    while ($info = mysql_fetch_array ($Resultat))
    {
    		$equipe = $info ['equipe'] ;
    		echo $equipe ;   
    		// REQUETE IMBRIQUEE DEBUT 
    				$sql2 = "SELECT * FROM $table WHERE equipe = '$equipe' ";
    				$Resultat2=mysql_db_query ($db, $sql2);
    				while ($info2 = mysql_fetch_array ($Resultat2))
    				{
    					$prenom = $info2 ['prenom']) ;
    					$nom = $info2 ['nom'] ;
    					echo $prenom ; echo $nom
    				}
    		// REQUETE IMBRIQUEE FIN
    	print '<br/>' ;
    }
    mysql_close () ;
    }
    Si les spécialistes ont mieux, je suis preneur...

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

Discussions similaires

  1. [PHP-mySql] requête imbriquée
    Par djew13 dans le forum Langage
    Réponses: 5
    Dernier message: 18/05/2011, 10h58
  2. [MySQL] Problème de requête imbriquée (mysql) & php
    Par niacinside dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 21/05/2008, 10h59
  3. [PHP MySQL] Erreur execution requête de type INSERT
    Par Pfeffer dans le forum Requêtes
    Réponses: 6
    Dernier message: 23/01/2006, 17h38
  4. requête mysql sous php
    Par remi59 dans le forum Débuter
    Réponses: 9
    Dernier message: 03/07/2003, 10h39
  5. Réponses: 14
    Dernier message: 17/03/2003, 18h31

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