cs_Nana35
Messages postés18Date d'inscriptionmercredi 8 octobre 2008StatutMembreDernière intervention 2 février 2009
-
9 oct. 2008 à 09:44
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 2011
-
9 oct. 2008 à 13:35
Bonjour à tous,
j'ai cherché sur le forum des réponses susceptibles de correspondre au mieux à ma situation mais je n'arrive pas à appliquer des requêtes sql pour mon cas particulier.
Dans un premier temps, je vous explique les relations entre mes tables sous Access:
Captage-->Collectivité
Captage-->SMP
Collectivité-->SMP
Collectivité-->Exploitant
SMP-->Exploitant
Je souhaite d'après ce modèle obtenir une requête :
IdCaptage, Nom captage, Id Producteur (SMP et collectivité confondus), Nom Producteur (SMP et Collectivité confondus), IdExploitant pour chaque producteur.
Si cette union entre trois tables n'est pas faisable, il y a une autre possibilité. Je cherche à obtenir sur une même colonne les identifiants producteurs (SMP et Collectivité) dans la table Captage et d'autre part à unir la table Collectivité avec la table SMP (table producteur) avec également l'exploitant qui est renseigné. Cela nécessite deux requêtes.
Quelle est la soultion que vous me proposez?
Est-t-il nécessaire de décrire davantage l'ensemble des champs?
Merci de votre aide.
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 9 oct. 2008 à 10:09
Salut
Peux tu mettre les types des champs et les autres champs pour éclaisir ta demande.
TABLE1
===========
ID | Collectivité
TABLE2
==========
ID | SMP
TABLE 3
==========
ID | PRODUCTEUR | TABLE_ORIGINE
Voila comment obtenir un jeu qui est du type table3
SELECT ID , Collectivité as PRODUCTEUR, 'collect' as TABLE_ORIGINE FROM TABLE1
UNION
SELECT ID , SMP as PRODUCTEUR, 'SMP' as TABLE_ORIGINE FROM TABLE2
Je sais que c'est pas la réponse mais ca peut être une piste pour résoudre le problème.
Je ne vois pas comment sont articulées tes tables
Pour faire la concaténation de champs c'est champ + ' ' + champ
cs_Nana35
Messages postés18Date d'inscriptionmercredi 8 octobre 2008StatutMembreDernière intervention 2 février 2009 9 oct. 2008 à 11:00
Merci,
Ok pour la table producteur entre la table smp et collectivité. Mais si je veux une relation captage -->producteur il faut que je regroupe dans la table captage ma colonne portant l'id SMP avec ma Colonne idColl. Mais ça aussi c'est pas clair pour moi.
Ta méthode implique alors deux requêtes. Je ne peux pas avoir du premier coup ce résultat :"IdCaptage, Nom captage, Id Producteur (SMP et collectivité confondus), Nom Producteur (SMP et Collectivité confondus), IdExploitant pour chaque producteur"
Par contre je ne cherche pas à concaténer deux champs.
Voici le détail de mes tables:
CAPTAGE: CAid, CAnom, CAstade, CAdate, CAcol#, CAsmp#
COLLECTIVITE: COid, COnom, COtype, COabonné, COsmp#, COexpl#
SMP: Sid, Snom, Sabre, Spresident, Sexpl#
EXPLOITANT: Eid, Enom.
En fait ,un captage peut être la propriété d'une collectivité ou d'un smp. Et une collectivité fait partie d'un smp. Un Smp a un contrat d'affermage avec un exploitant et une collectivité a aussi de son côté un contrat d'affermage avec un exploitant.
J'espère que c'est plus clair.
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 9 oct. 2008 à 13:35
Salut,
Une requete du style
SELECT captage.nom, Collect.nomC, SMP.nomSMP, iif(isnull(SMP.nomSMP),Collect.nomC,SMP.nomSMP) as exploitFROM SMP RIGHT JOIN (Collect RIGHT JOIN captage ON Collect.id captage.FK_C_ID) ON SMP.id captage.FK_S_ID;
Ca repond peut etre a ta demande le nom des colonnes a été perdu pour gagner du temps.