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 :

2 requêtes au lieu d'une


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 149
    Par défaut 2 requêtes au lieu d'une
    Bonjour, j'ai un problème d'optimisation de mes requêtes. Je m'explique je suis obligé de réaliser 2 requétes au lieu d'une lors de mes jointures lorsque je veux récupérer la clé primaire.

    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $req="select id_fiche from fiche,type_fiche where fiche.id_type_fiche=type_fiche.id_type_fiche and nom_fiche='chat';";
     
    au lieu de cela je suis obligé de faire ceci
     
    $req0="select id_type_fiche from type_fiche where nom_type='felin';";
    $res0=mysql_query($req0);
    $aff0=mysql_fetch_array($res0);
     
    $req="select id_fiche from fiche where nom_fiche='chat' and id_type_fiche='$aff0[id_type_fiche]';";
    Je précise que id_type_fiche est la clé primaire de la table type_fiche et une clé étrangére dans la table fiche.

    Je remercie celui qui m'apportera une solution

  2. #2
    Membre chevronné
    Homme Profil pro
    Lead Dev Web
    Inscrit en
    Avril 2005
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Lead Dev Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2005
    Messages : 282
    Par défaut
    Et pourquoi es tu "obligé" ? T'as une erreur ? Ca ne te renvois rien ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 30
    Par défaut
    Essaye :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $req="select fiche.id_fiche from fiche JOIN type_fiche ON fiche.id_type_fiche=type_fiche.id_type_fiche WHERE fiche.nom_fiche='chat'";
    Tu peux aussi utiliser ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $req="select id_fiche from fiche where nom_fiche='chat' and id_type_fiche IN (select id_type_fiche from type_fiche where nom_type='felin')";
    Mais la jointure est mieux approprié

    Edit : mieux vaut utiliser des alias quand tu fait des jointures

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT a.id_fiche FROM fiche as a JOIN type_fiche as b ON a.id_type_fiche=b.id_type_fiche WHERE a.nom_fiche='chat'

Discussions similaires

  1. [MySQL] Afficher les données dans un tableau html horizontal avec une seule requête au lieu de 6
    Par arthuro45 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/10/2010, 11h13
  2. Réponses: 3
    Dernier message: 15/03/2010, 12h44
  3. Une requête au lieu de deux
    Par Gouyon dans le forum Langage SQL
    Réponses: 11
    Dernier message: 03/05/2009, 16h10
  4. Une seule requête au lieu de cinq ?
    Par Klyne dans le forum Langage SQL
    Réponses: 8
    Dernier message: 06/10/2008, 12h58
  5. une requête au lieu de deux ?
    Par Invité dans le forum Requêtes
    Réponses: 4
    Dernier message: 30/11/2005, 12h37

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