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

Langage SQL Discussion :

pb Requete parent


Sujet :

Langage SQL

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    490
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 490
    Points : 201
    Points
    201
    Par défaut pb Requete parent
    bonjour,
    j'ai une table avec trois champs :

    ------------------------------------------------
    intitulé----numGenre------numGenreParent-------
    ------------------------------------------------
    toto---------1-----------------null-------------
    tata---------2------------------1--------------


    comment faire pour avoir le nom du parent de tata ?

    j'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT intituleGenre as Parent
    From table where numGenre = 
    (select numGenreParent from table)
    mais là je bloque totalement...merci de votre aide

  2. #2
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Si tu as plus d'un numGenre tu ne dois pas mettre = mais IN
    et tu dois mettre ta condition dans ton second select

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT intituleGenre AS Parent
    FROM matable WHERE numGenre = 
    (SELECT numGenreParent FROM matable WHERE intituleGenre = 'tata')

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT intituleGenre AS Parent
    FROM matable WHERE numGenre IN 
    (SELECT numGenreParent FROM matable WHERE intituleGenre = 'tata' OR intituleGenre = '...')
    Jasmine,

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT A.INTITULÉ
    FROM   DVP A
      INNER JOIN DVP B
        ON A.NUMGENRE = B.NUMGENREPARENT
    WHERE B.INTITULÉ = 'tata';
    PS : supprime les accents dans les noms de tes colonnes.

  4. #4
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Les JOIN sont-ils mieux que les SELECT imbriqués?


    Jasmine,

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    490
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 490
    Points : 201
    Points
    201
    Par défaut
    Citation Envoyé par Magnus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT A.INTITULÉ
    FROM   DVP A
      INNER JOIN DVP B
        ON A.NUMGENRE = B.NUMGENREPARENT
    WHERE B.INTITULÉ = 'tata';
    PS : supprime les accents dans les noms de tes colonnes.
    a quoi correspondent DVP A ET B ?

    oui oui je supprime les accents de mes intitulés, là c'était pour l'exemple....

  6. #6
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2006
    Messages : 139
    Points : 147
    Points
    147
    Par défaut
    Citation Envoyé par maysa
    a quoi correspondent DVP A ET B ?
    La requête est une auto-jointure :
    - DVP est la table
    - A et B sont des alias donnés à la table

    L'auto jointure permet d'effectuer une jointure réflexive entre ta clé primaire et le numéro de parent associé.

  7. #7
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Citation Envoyé par Jasmine80
    Les JOIN sont-ils mieux que les SELECT imbriqués?
    Ils sont surtout plus lisibles maintenant pour ce qui est des performances, cela peut dépendre de ton SGBD.
    Je ne suis pas assez calé pour te répondre.
    Ton SGBD doit offrir des outils d'analyse des performances, creuse de ce côté

  8. #8
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2006
    Messages : 139
    Points : 147
    Points
    147
    Par défaut
    Par exemple, si ton SGBD est MySQL, essaie de faire :
    Ca te montrera le fonctionnement de ta requête, la façon dont l'interprète ton SGBD.
    http://dev.mysql.com/doc/refman/5.0/fr/explain.html

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Août 2006
    Messages : 91
    Points : 74
    Points
    74
    Par défaut
    donne ns la stucture de la table 'TABLE'

    Sinon je te conseille de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT parent.nom
    FROM enfant, parent
    where parent.numGenreParent=enfant.numGenreParent
    nb: parent est la table des parents et et enfants, la table des enfants.
    tu peux adapter ces noms selon ceux que tu utilises actuellement ds ta bd.

  10. #10
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2006
    Messages : 139
    Points : 147
    Points
    147
    Par défaut
    Citation Envoyé par samsso2006
    donne ns la stucture de la table 'TABLE'

    Sinon je te conseille de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT parent.nom
    FROM enfant, parent
    where parent.numGenreParent=enfant.numGenreParent
    nb: parent est la table des parents et et enfants, la table des enfants.
    tu peux adapter ces noms selon ceux que tu utilises actuellement ds ta bd.
    Ca revient exactement au même que la solution de Magnus

Discussions similaires

  1. relation Parent/Enfant sur la meme table et requete SQL
    Par tatayoyo dans le forum Langage SQL
    Réponses: 5
    Dernier message: 17/04/2007, 18h57
  2. Requête pour compter le nombre de fils de chaque parent
    Par santana2006 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 25/08/2006, 16h08
  3. Réponses: 5
    Dernier message: 27/06/2006, 20h27
  4. Réponses: 6
    Dernier message: 08/05/2006, 14h18
  5. Requete pour rechercher tous les parents
    Par richard038 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 28/11/2005, 21h37

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