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 :

requête imbriquée sur la même table


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 6
    Points : 6
    Points
    6
    Par défaut requête imbriquée sur la même table
    Bonjour,

    J'aurais besoin d'un petit coup de main, je précise que je suis très loin d'être fort en sql mais j'espère que ce n'est pas mon modèle de donnée qui est à revoir :

    J'ai une table "switch" avec 3 cols (pour simplifier) :
    - id
    - nom
    - cascade

    le champ cascade contient l'id d'un autre switch de le même table (concrètement cascadé sur le premier en fait).

    Je cherche à obtenir en sortie 2 colonnes contenant le nom du switch ainsi que le nom du switch de cascade associé !

    Cette requête fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT nom, cascade as idc,
      (select nom 
        from switch 
        where id=idc) as cas 
    FROM switch
    mais le problème c'est qu'elle me retourne 3 colonnes et je ne veux pas de la colonne "cascade as idc" !

  2. #2
    Expert éminent sénior
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Il faut faire une auto-jointure sur la table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT s1.nom AS NomSwitch, s2.nom AS NomSwitchEnCascade
    FROM switch AS s1
    INNER JOIN switch AS s2 ON s1.cascade = s2.id
    ORDER BY s1.nom

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    SUPER Je n'aurais jamais eu l'idée de faire ça !
    Reste un petit détail : il se peut qu'un switch n'est pas de switch de cascade auquel cas, le champ est NULL. Comment malgré tout le ramener dans la requête ?

    Citation Envoyé par CinePhil Voir le message
    Il faut faire une auto-jointure sur la table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT s1.nom AS NomSwitch, s2.nom AS NomSwitchEnCascade
    FROM switch AS s1
    INNER JOIN switch AS s2 ON s1.cascade = s2.id
    ORDER BY s1.nom

  4. #4
    Expert éminent sénior
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par djosh Voir le message
    il se peut qu'un switch n'est pas de switch de cascade auquel cas, le champ est NULL. Comment malgré tout le ramener dans la requête ?
    Avec une jointure externe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT s1.nom AS NomSwitch, s2.nom AS NomSwitchEnCascade
    FROM switch AS s1
    LEFT OUTER JOIN switch AS s2 ON s1.cascade = s2.id
    ORDER BY s1.nom
    Pour plus d'infos sur les jointures, voir le blog de SQLPro.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Merci bcp !
    Ça a l'air très simple pour vous

  6. #6
    Expert éminent sénior
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    C'est en forgeant qu'on devient forgeron et je forge du SQL depuis début 2008.
    La jointure est vraiment une opération de base des SGBD à connaître absolument.

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

Discussions similaires

  1. Requête imbriquée sur une même table
    Par Bluesman72 dans le forum Oracle
    Réponses: 1
    Dernier message: 02/05/2012, 10h37
  2. Requête multicritère sur une même table
    Par M31ani3 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 26/09/2011, 16h13
  3. requête imbriqué sur sa propre table
    Par bastien dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/02/2010, 01h51
  4. Requête conditionnelle sur une même table
    Par grafistolage dans le forum Langage SQL
    Réponses: 9
    Dernier message: 15/02/2010, 00h49
  5. Requête imbriquée dans une même table
    Par casavba dans le forum Langage SQL
    Réponses: 3
    Dernier message: 09/01/2008, 22h02

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