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 :

Requete combiné sur une meme table


Sujet :

Requêtes MySQL

  1. #1
    Membre confirmé Avatar de Katachana
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2007
    Messages : 755
    Points : 503
    Points
    503
    Par défaut Requete combiné sur une meme table
    Bonjour,

    Je cherche à faire une requete la plus efficace possible et éviter de faire deux requetes successives.

    Voila mon probleme.
    J'ai une table TEST :
    test_id
    test_id_pere
    etc..

    je dispose d'une test_id.

    Ce que je souhaite faire est de récupérer le test_id_pere a partir de la test_id dont je dispose, puis de récupérer l'ensemble des informations (le etc.. dans l'exemple) du test_id_pere qui est également une test_id (les éléments père sont également dans la table TEST).


    En deux requêtes ca donne cela :
    res = Select test_id_pere FROM TEST WHERE test_id = 'id'
    Select * FROM TEST WHERE test_id = 'res';

    Merci d'avance !

  2. #2
    Membre confirmé Avatar de nounetmasque
    Inscrit en
    Janvier 2003
    Messages
    494
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 494
    Points : 570
    Points
    570
    Par défaut
    Je pense que tu es obligé de passé par deux requêtes, essaye :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT test_id
    FROM test, 
    (SELECT test_id_pere FROM test WHERE test_id = 'id') AS TB_PERE
    WHERE test_id IN (TB_PERE.test_id_pere)

  3. #3
    Membre confirmé Avatar de Katachana
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2007
    Messages : 755
    Points : 503
    Points
    503
    Par défaut
    Merci pour ton aide .

    J'ai réussi à le faire en une requete de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM TEST WHERE service_id=(SELECT test_id_pere FROM TEST WHERE test_id = '" .$id. "')
    Avez-vous un avis quand à la rapidité d'exécution qu'il y a entre l'utilisation d'un seule requete et l'utilisation de deux requete successives.

    Merci !

  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 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 040
    Points : 23 795
    Points
    23 795
    Par défaut
    Bonjour,

    Les sous-requêtes ont souvent des performances moins bonnes que les jointures.
    Donc, tu peux faire ce qu'on appelle une auto-jointure, c'est à dire une jointure de la table test sur elle-même :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT p.*
    FROM TEST t
    INNER JOIN TEST p on t.test_id_pere = p.test_id
    WHERE t.test_id = '" .$id. "')
    ced

  5. #5
    Membre confirmé Avatar de Katachana
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2007
    Messages : 755
    Points : 503
    Points
    503
    Par défaut
    Merci beaucoup

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

Discussions similaires

  1. Requete avec inner join sur une meme table
    Par mattmax dans le forum Développement
    Réponses: 1
    Dernier message: 15/12/2011, 15h34
  2. requete imbriquée sur une meme table
    Par ZN dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 13/08/2010, 18h43
  3. 2 requete sur une meme table en une seule
    Par Nizarazu dans le forum Langage SQL
    Réponses: 6
    Dernier message: 24/08/2006, 22h03
  4. DOUBLE REQUETE SUR UNE MEME TABLE
    Par MORAS dans le forum Langage SQL
    Réponses: 2
    Dernier message: 25/01/2006, 14h40
  5. Association 1:n sur une meme table
    Par dafalcon dans le forum Décisions SGBD
    Réponses: 15
    Dernier message: 27/04/2005, 10h07

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