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

PHP & Base de données Discussion :

Requête imbriquée dur dur [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 487
    Par défaut Requête imbriquée dur dur
    Bonsoir ,
    sous phpmyadmin 3.23
    voila je compare deux table nebil_score et nebil_gagnant_concours
    et récupère les noms qui sont dans la table nebil_score mais qui ne se trouve pas en doublons dans la table nebil_gagnant_concours .
    donc je me retrouve avec un certains nombre de pseudo avec leur score
    mais mon but après comparaison et de récupérer uniquement celui qui a le score le plus haut , je ne sais ou introduire le order by score DESC limit 0,1
    ou le MAX score dans cette requête .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $requete300 = mysql_query("SELECT nebil_score.pseudo as Spseudo,nebil_score.score as Sscore  
    FROM nebil_score LEFT JOIN nebil_gagnant_concours ON nebil_score.pseudo = nebil_gagnant_concours.pseudo WHERE nebil_gagnant_concours.pseudo Is NULL ");
    {
        $pseudo_jamais_gagner=$var300['Spseudo'];  
        $score_jamais_gagner=$var300['Sscore'];
    }

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2004
    Messages : 7
    Par défaut
    Le ORDER BY se met tout à la fin de la requete mySQL
    Et pour le max, j'ai pas très bien compris ce que tu voulais faire avec, mais ce serait un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT MAX(.......) ...
    Donc dans le champ SELECT, et il entoure ce que tu veux récupérer...

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 487
    Par défaut
    sa marche pas a la fin , je me demande meme si avec cette requette
    si cette precision est possible

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2004
    Messages : 7
    Par défaut
    A la limite, tu extrait tes deux tableaux avec mysql, tu les enregistre séparément dans deux tableaux PHP différents, et ensuite tu fait tes opérations sur les tableau PHP :

    1. Prendre le tableau scores, enlever toutes les lignes dont la colonne "pseudo" aparrait dans le tableaux des gagnants
    2. Trier ton tableau scores dans l'ordre décroissant et prendre le premier enregistrement

    Et voilà !

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 487
    Par défaut
    j'ai pensé a sa mais je ne sais pas l'ecrire encore , par exemple je ne vois pas comment il faut si prendre pour faire des operations sur les données rapatriés ?

    la selection ?, la comparaison ? , l'elimination ?

  6. #6
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut

    Il s'agit du SGBD MySQL, pas de l'applicatif phpMyAdmin.
    Tu parles de requête imbriquée mais, d'une part, je n'en vois pas et, d'autre part, je ne crois pas que MySQL 3.23 supporte ce type de requête.
    Ta requête actuelle a toutes les chances de ne pas te donner ce que tu attends. En effet, tu effectues une jointure sur un champ que tu souhaites NULL, ce qui est incohérent. Je peux me tromper, je n'ai jamais été parfaitement au point sur les JOIN en dehors de l'INNER...

    Pour la requête "avoir les pseudos qui ne sont pas en double dans l'autre table et en récupérer celui au score max" :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT `pseudo` AS Spseudo, `score` AS Sscore
    FROM `nebil_score`
    WHERE `pseudo` NOT IN (
       SELECT `pseudo`
       FROM `nebil_gagnant_concours`)
    ORDER BY Sscore DESC
    LIMIT 1;
    Alternative pour les serveurs ne gérant pas les requêtes imbriquées :
    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
    $sql = 'SELECT `pseudo`
         FROM `nebil_gagnant_concours`';
     
    $result = mysql_query($sql) or die(__LINE__.'<br />'.mysql_error());
     
    $gagnants = array('');
    while($gagnant = mysql_fetch_assoc($result)){
       $gagnants[] = $gagnant['pseudo'];
    }
     
     
    $sql = 'SELECT `pseudo` AS Spseudo, `score` AS Sscore
    FROM `nebil_score`
    WHERE `pseudo` NOT IN ("'.implode('","', $gagnants.'")
    ORDER BY Sscore DESC
    LIMIT 1';
     
    $result = mysql_query($sql) or die(__LINE__.'<br />'.mysql_error());
     
    if($grand_gagnant = mysql_fetch_assoc($result)){
       echo $grand_gagnant['Spseudo'].' ('.$grand_gagnant['Sscore'].')';
    }
    [Pas testé mais l'idée y est]

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

Discussions similaires

  1. [hard core] requête dur dur
    Par heid dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 14/02/2006, 11h39
  2. Pb requête imbriquée
    Par ddams dans le forum Requêtes
    Réponses: 11
    Dernier message: 20/04/2004, 12h13
  3. problème avec une requête imbriquée
    Par jaimepasteevy dans le forum Langage SQL
    Réponses: 13
    Dernier message: 05/12/2003, 10h29
  4. Requêtes imbriquées ?
    Par Ph. B. dans le forum XMLRAD
    Réponses: 7
    Dernier message: 06/05/2003, 13h19
  5. Requête imbriquée et indexes INTERBASE
    Par vadim dans le forum InterBase
    Réponses: 2
    Dernier message: 06/09/2002, 16h15

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