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 avec jointure recursive


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 7
    Points : 3
    Points
    3
    Par défaut requête avec jointure recursive
    Bonjour,

    J'ai la requête ci-jointe elle utilise la table PosteTravail
    Descriptif:
    Code;PosteVideo
    1;A
    1;B
    2;A
    3;C
    3;D
    4;B
    4;E
    5;F
    5;D

    L'objectif c'est, par Code de trouver tous ses héritiers par rapport au PosteVideo.
    Exemple:
    Pour A on aura 1;2;4
    Pour B on aura 1;2;4
    Pour C on aura 3;5
    Pour D on aura 3;5
    Pour E on aura 1;2;4
    Pour F on aura 3;5

    Actuellement ma requête est la suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT PosteTravail.PosteVideo, PosteTravail_4.Code
    FROM PosteTravail INNER JOIN
    PosteTravail AS PosteTravail_1 ON PosteTravail.Code = PosteTravail_1.Code INNER JOIN
    PosteTravail AS PosteTravail_2 ON PosteTravail_1.PosteVideo = PosteTravail_2.PosteVideo INNER JOIN
    PosteTravail AS PosteTravail_3 ON PosteTravail_2.Code = PosteTravail_3.Code INNER JOIN
    PosteTravail AS PosteTravail_4 ON PosteTravail_3.PosteVideo = PosteTravail_4.PosteVideo
    GROUP BY PosteTravail.PosteVideo, PosteTravail_4.Code
    HAVING (PosteTravail.PosteVideo = 'B')
    ORDER BY PosteTravail.PosteVideo
    Hors elle n'est pas récursive. Qu'elle serait la solution ?

    Merci pour vos réponse.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 386
    Points
    18 386
    Par défaut
    Quel est votre SGBD ?

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Tom_G Voir le message
    Bonjour,

    J'ai la requête ci-jointe elle utilise la table PosteTravail
    Descriptif:
    Code;PosteVideo
    1;A
    1;B
    2;A
    3;C
    3;D
    4;B
    4;E
    5;F
    5;D

    L'objectif c'est, par Code de trouver tous ses héritiers par rapport au PosteVideo.
    Exemple:
    Pour A on aura 1;2;4
    Pour B on aura 1;2;4
    Pour C on aura 3;5
    Pour D on aura 3;5
    Pour E on aura 1;2;4
    Pour F on aura 3;5
    Je ne vois pas la logique qui va de la table Poste travail vers le résultat attendu !
    Pour A : 1 et 2 je veux bien mais pourquoi 4 ?
    Pour B : 1 et 4 je veux bien mais pourquoi 2 ?
    Pour C : 3 je veux bien mais pourquoi 5 ?

    J'arrête là...

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Quel est votre SGBD ?
    Sql Server 2005

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Quel est votre SGBD ?
    Citation Envoyé par CinePhil Voir le message
    Je ne vois pas la logique qui va de la table Poste travail vers le résultat attendu !
    Pour A : 1 et 2 je veux bien mais pourquoi 4 ?
    Pour B : 1 et 4 je veux bien mais pourquoi 2 ?
    Pour C : 3 je veux bien mais pourquoi 5 ?

    J'arrête là...
    Pour A : 1 et 2 je veux bien mais pourquoi 4 ?
    Il faut voir le lien de la façon suivante:
    A->1
    1->B
    B->4
    4->E
    A->2
    Donc A descendance de 1;2;4

    Je sais pas facile expliquer!

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 386
    Points
    18 386
    Par défaut
    Houla... à première vue ça me paraît très mauvais comme modélisation, d'ailleurs cette remarque est un bel aveu :
    Citation Envoyé par Tom_G Voir le message
    Je sais pas facile expliquer!
    Cherchez un article de SQLPro sur ce site qui traite de la récursivité.

  7. #7
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Houla... à première vue ça me paraît très mauvais comme modélisation
    Effectivement, je n'en comprends toujours pas la logique !

    Sémantiquement, que représentent Code et PosteVideo et qu'est sensée contenir la table PosteTravail ?

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Houla... à première vue ça me paraît très mauvais comme modélisation, d'ailleurs cette remarque est un bel aveu :


    Cherchez un article de SQLPro sur ce site qui traite de la récursivité.
    La modélisation. J'ai pas choisi, malheureusement!

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Effectivement, je n'en comprends toujours pas la logique !

    Sémantiquement, que représentent Code et PosteVideo et qu'est sensée contenir la table PosteTravail ?
    La table PosteTravail contient :
    le Code qui est l'opération à faire afficher sur un ou plusieurs PosteVideo.
    exemple:
    Code;NomPoste;PosteVideo
    1220;Prep fixe;Embalfixe
    1220;Prep fixe;Peinture
    1230;Evac fixe;Embalfixe
    8120;Laquage Bat;Peinture
    8120;Laquage Bat;Patine
    8140;Laquage Dor;Peinture

    De plus chaque Code (Opération) à un temps alloué.
    Qui va être réalisé sur l'un des PosteVideo qui lui a été affecté.
    Exemple
    1220 temps alloué 10min
    Pourra être validé sur Embalfixe ou Peinture.
    Hors nous voulons faire un cumul temps par PosteVideo.
    Suis-je claire?

Discussions similaires

  1. Requête avec jointure
    Par Maglight dans le forum Langage SQL
    Réponses: 4
    Dernier message: 17/11/2005, 09h57
  2. optimisation d'une requête avec jointure
    Par champijulie dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 07/07/2005, 09h45
  3. Requête avec jointures
    Par Corben dans le forum Langage SQL
    Réponses: 4
    Dernier message: 16/11/2004, 12h55
  4. Mise à jour de table impossible après requête avec jointure
    Par sto dans le forum Bases de données
    Réponses: 5
    Dernier message: 17/03/2004, 13h24
  5. problème de requête avec jointures
    Par tinhat dans le forum Requêtes
    Réponses: 7
    Dernier message: 11/08/2003, 10h33

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