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 :

Aide pour optimiser requete MYSQL


Sujet :

Requêtes MySQL

Vue hybride

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 25
    Par défaut Aide pour optimiser requete MYSQL
    Bonjour,

    J'utilise Mysql 5.0.77 + PHP 5.2.6
    J'ai 2 tables :
    table "CLIENT" avec les colonnes :
    id, numclient, lastname, firstname, namesoc, numtel

    table "CONTRAT" avec les colonnes :
    id, numclient, numcontrat, datecontrat

    Le champ "numclient" me permet de relier les infos entre les 2 tables.

    J'afficher dans ma page PHP la liste des contrat actifs avec à chaque fois les infos clients (societe, nom, prenom, téléphone)

    Par défaut c'est trié par numéro de contrat
    J'utilise la requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $result = mysql_query("SELECT * FROM `contrat` ORDER BY  `numcontrat`");
    while ($row = mysql_fetch_array($result, MYSQL_NUM)) 
            {$result2=mysql_query("SELECT * FROM `client` WHERE `numclient`='".$row[1]."'");
                $row2 = mysql_fetch_array($result2, MYSQL_NUM);
                echo '<td>'.$row[2];
                echo '</td><td>'.$row2[2];
                echo '</td><td>'.$row2[3];
                echo '</td><td>'.$row2[4].'</td>';
             }
    N'y aurait-il pas un moyen d'optimiser ça ?

    Merci d'avance.

  2. #2
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    salut,

    tu peux par exemple ne faire qu'une requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT * 
    FROM client
    JOIN contrat
    on  contrat.numclient  = contrat.numclient
    order by contrat.numclient
    Avec un index sur les colonnes numclient de tes tables

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 25
    Par défaut
    Merci pour ta réponse.
    Cela me permet de faire un tri facilement en me basant sur une table ou l'autre.

    Par contre, pour obtenir mes résultats, je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $result = mysql_query(SELECT * FROM client JOIN contrat ON  contrat.numclient  = contrat.numclient ORDER BY contrat.numclient);
    while ($row = mysql_fetch_array($result, MYSQL_NUM)) 
            {
              .......
             }
    Et la, je n'obtiens que les colonnes de la table indiquée dans le SELECT.

    Y a-t-il un moyen d'afficher à partir de cette requete des colonnes d'une table ou d'une autre ?

    Merci d'avance.

  4. #4
    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 063
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 063
    Par défaut
    Citation Envoyé par roadruner Voir le message
    Et la, je n'obtiens que les colonnes de la table indiquée dans le SELECT.
    Non, là tu obtiens les colonnes des 2 tables, puisque tu as mis * dans le SELECT. En l'occurrence, tu obtiens d'abord les colonnes de la table client, puis celles de la table contrat.

    Citation Envoyé par roadruner Voir le message
    Y a-t-il un moyen d'afficher à partir de cette requete des colonnes d'une table ou d'une autre ?
    Le mieux, c'est encore de ne sélectionner que les colonnes qui t'intéressent vraiment. Ca n'est pas une bonne idée d'utiliser l'étoile dans un SELECT (sauf dans un COUNT ou un EXISTS). Du coup, tu maîtriseras pleinement l'ordre de tes colonnes, pour les manipuler ensuite comme tu le souhaites en PHP .

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 25
    Par défaut
    OK, Merci

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

Discussions similaires

  1. Aide pour optimisation Mysql
    Par davidmysql dans le forum Administration
    Réponses: 1
    Dernier message: 07/06/2012, 18h04
  2. Aide pour Optimiser une Requete
    Par Thanwiel dans le forum Langage SQL
    Réponses: 10
    Dernier message: 06/12/2007, 10h31
  3. Réponses: 2
    Dernier message: 04/11/2006, 00h33
  4. Aide pour optimiser une requete
    Par Akanath dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 15/09/2005, 11h05
  5. Aide pour une requete ... "COUNT(*)"
    Par mechantebestiole dans le forum Langage SQL
    Réponses: 13
    Dernier message: 25/05/2004, 16h27

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