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 :

[SQL] En une seule requête


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 57
    Points : 50
    Points
    50
    Par défaut [SQL] En une seule requête
    Bonjour,
    je voudrais faire en une seule requête ce que je n'arrive à faire qu'en deux, mais je ne vois pas comment. J'ai tenté les jointures mais sur MySQL et avec l'usage de DISTINCT rien ne marche.. JOIN pas mieux.
    Le code suivant marche mais je ne trouve pas ça très performant en fait ...
    - J'extrais les numéros de département d'un annuaire et je veux que le nom de ces départements apparaissent. Ces noms sont dans une autre table nommée départements. Je sais c'est tout bête mais je bloque.
    Pour le moment j'utilise DISTINCT pour récupérer les No, je les places dans un tableau pour m'en servir sur une seconde requête.

    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
     
    // on recupère les No de departement de l'annuaire
    $sql1="SELECT DISTINCT(departement)
           FROM annuaire 
           ORDER BY departement ASC";
    $query1=mysql_query($sql1) or die(mysql_error());
    for($i=0; $i < $val1 = mysql_fetch_array($query1); $i++){
    	// on les mets dans un tableau
    	$departement[$i]= $val1["departement"];
    }
    // on trie le tableau
    sort($departement);
    //print_r($departement);
    // on récupère les nom de département par le No dans la table departements
    for($j=0; $j < sizeof($departement); $j++){
    	$sql3="SELECT iddepartements, nom 
                   FROM departements
                   WHERE departements.iddepartements = '".$departement[$j]."'";
    	$query3=mysql_query($sql3) or die(mysql_error());
    	$val3 = mysql_fetch_array($query3);
            // second tableau qui contient No et nom des départements
    	$departement_2[$val3["iddepartements"]] = $val3["nom"];	
    }

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    heu... tu es sûr que cette requête ne fonctionne pas ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT DISTINCT D.iddepartements, D.nom 
    FROM departements D
       INNER JOIN annuaire A
          ON A.departement = D.iddepartements
    ORDER BY D.iddepartements ASC
    ??

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 57
    Points : 50
    Points
    50
    Par défaut
    WHouaaa merci Swoög
    maintenant que je le vois je me rends compte que je me suis emmêlé les pinceaux quand j'ai fait le JOIN tout à l'heure, j'avais pas pensé à INNER JOIN !!
    Il est temps que je ressorte les cours là, j'ai le bulbe tout mou

  4. #4
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut


    pour tout ce qui touche à SQL, il y a le tuto de SQLpro linké dans mon Espace perso (cf signature) il est super ^^

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

Discussions similaires

  1. Réponses: 19
    Dernier message: 30/07/2013, 17h43
  2. [MySQL] Réunir 3 requêtes SQL en une seule
    Par Furil dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/06/2013, 12h08
  3. Réponses: 1
    Dernier message: 24/10/2011, 12h07
  4. [sql] Retourner une seule ligne..
    Par b_lob dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 24/05/2006, 16h15
  5. Insérer plusieurs enregistrements en une seule requête
    Par pyd001 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/02/2004, 11h38

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