Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/04/2011, 18h11   #1
Invité de passage
 
Homme Harry Callahan
Développeur Web
Inscription : avril 2011
Messages : 1
Détails du profil
Informations personnelles :
Nom : Homme Harry Callahan
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2011
Messages : 1
Points : 0
Points : 0
Par défaut Requête complexe (recursive inside)

Hello,

J’ai un petit souci pour sortir une requête et j’aimerais bien un petit coup de pouce

Ma base de données contient toutes les données nécessaires pour détailler l’architecture d’une structure.
Je prendrais l’exemple de la voiture comme structure dans ce post :

Voici ci-dessous les tables de ma base de données simplifié au maximum

Table de données pures
Section (ID, lieu) : section de la voiture (par exemple : partie avant, partie arrière)
Besoin (ID, reference) : besoin à remplir pour la voiture (par exemple : besoin de pneus)
Solution (ID, reference) : réponse au besoin contenu dans la table Besoin (par exemple : pneu pluie, pneu neige, etc.)
ConfigSolution (ID, reference) : configuration de la solution
Equipement (ID, reference) : sous-partie de la solution (par exemple : boulon de taille 14)
Assemblage (ID, reference) : assemblage d’équipements (par exemple boulons_14 représentent tous les boulons de taille 14 nécessaire pour une solution)

Tables de liens
Lien_Section_Besoin (ID, IDR_Section, IDR_Besoin)
Lien_Besoin_ConfigSolution (ID, IDR_Besoin, IDR_ConfigSolution)
Lien_ConfigSolution_Solution (ID, IDR_ConfigSolution, IDR_Solution)
Lien_Solution_Assemblage_Equipement (ID, IDR_Solution, IDR_Assemblage, IDR_Equipement)
Lien_Assemblage_Assemblage (ID, IDR_Parent, IDR_Fils)

But de la requête : afficher le détail de toutes les tables de données pures en faisant le lien depuis les sections jusqu’aux équipements.

Difficulté : les assemblages peuvent contenir d’autres assemblages de façon non quantifiable (i.e. : on peut avoir 1 assemblage lié à une solution comme avoir 1 assemblage lui-même contenant 1 assemblage lui-même contenant 1 assemblage etc. et chacun contenant des équipements)

Autres informations :
1 solution peut être liée directement à 0 ou X équipements
1 solution peut être liée directement à 0 ou X assemblages
1 assemblage peut être lié directement à 1 ou X équipements
1 assemblage peut être lié directement à 0 ou X assemblages
1 configSolution peut être liée directement à 1 solution
1 besoin peut être lié directement à 0 ou X configSolutions
1 section peut être lié directement à 1 ou X besoins
1 besoin peut être lié directement à 1 ou X sections
1 configSolution peut être lié à 1 ou X besoins
1 équipement peut être lié à 0 ou X solutions
1 équipement peut être lié à 0 ou X assemblages
1 assemblage peut être lié à 0 ou X solutions

SGBD : SQL Server 2008


Je suis partie sur les CTE (Common Table Expression) pour afficher tous les assemblages de manière récursive mais je galère à faire le CTE avec toutes les jointures pour remonter jusqu’à la section et pour descendre jusqu’aux équipements

Quelqu'un peut-il me filer un coup de main s'il vous plait ?
Harry Callahan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2011, 08h03   #2
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 953
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 953
Points : 17 773
Points : 17 773
Je pense déjà que votre modèle est faux.
Pare exemple "Lien_Solution_Assemblage_Equipement (ID, IDR_Solution, IDR_Assemblage, IDR_Equipement)" contredit vos explications.

Avez vous fait une modélisation conceptuelle ? Si oui, pouvez vous montrer le MCD ???

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h44.


 
 
 
 
Partenaires

Hébergement Web