vincentstryckmans
Messages postés228Date d'inscriptionlundi 5 avril 2004StatutMembreDernière intervention25 octobre 2006
-
14 déc. 2005 à 12:10
aieeeuuuuu
Messages postés698Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention20 mai 2011
-
14 déc. 2005 à 15:20
Bonjour,
J'ai un problème de jointure.
La table identif_officiel décrit les incidents survenus à l'infrastructure ferroviaire.
La table constat_officiel contient, éventuellement pour chaque identif_officiel.id, un constat d'exploitation structuré en trois paramètres (entiers) : lnk_domaine, lnk_classe et lnk_texte.
Les tables domaine_constat, classe_constat et texte_constat contiennent les libellés en clair (en deux langues) correspondant respectivement au lnk_domaine, lnk_classe et lnk_texte encodé dans la table identif_officiel.
Voici la requête que j'écris pour lire touts les incidents
SELECT
IDENTIF_OFFICIEL.ID,
... ... ...
GARE.LBL_GARE,
GRT.LBL_GRT,
LOC_CODE.F_LOC_CODE,
ARRONDISSEMENT.LBL_ARR,
DOMAINE_CONSTAT.F_DOMAINE,
CLASSE_CONSTAT.F_CLASSE,
TEXTE_CONSTAT.F_TEXTE
FROM
IDENTIF_OFFICIEL
LEFT OUTER JOIN GARE ON (IDENTIF_OFFICIEL.VIA_GARE=GARE.ID)
LEFT OUTER JOIN GRT ON (IDENTIF_OFFICIEL.VIA_DISREG=GRT.ID)
LEFT OUTER JOIN LOC_CODE ON (IDENTIF_OFFICIEL.LOC_CODE=LOC_CODE.ID_LOC_CODE)
LEFT OUTER JOIN ARRONDISSEMENT ON (IDENTIF_OFFICIEL.VIA_ARR=ARRONDISSEMENT.ID)
RIGHT OUTER JOIN CONSTAT_OFFICIEL ON (CONSTAT_OFFICIEL.LNK_IDENTIF=IDENTIF_OFFICIEL.ID)
LEFT OUTER JOIN DOMAINE_CONSTAT ON (CONSTAT_OFFICIEL.LNK_DOMAINE=DOMAINE_CONSTAT.ID_DOMAINE)
LEFT OUTER JOIN CLASSE_CONSTAT ON (CONSTAT_OFFICIEL.LNK_CLASSE=CLASSE_CONSTAT.ID_CLASSE)
LEFT OUTER JOIN TEXTE_CONSTAT ON (CONSTAT_OFFICIEL.LNK_TEXTE=TEXTE_CONSTAT.ID_TEXTE)
Mon problème est que les record identif_officiel.id qui n'ont pas de correspondant dans constat_incident ne sont pas repris. En fait, les trois dernières jointures du select rejètent les cas où lnk_domaine, lnk_classe et lnk_texte sont NULL.
Les clefs étrangéres entre les tables sont :
ALTER TABLE CONSTAT_OFFICIEL ADD CONSTRAINT FK_LNK_CONSTAT_OFF FOREIGN KEY (LNK_IDENTIF) REFERENCES IDENTIF_OFFICIEL (ID) ON DELETE CASCADE;
ALTER TABLE CONSTAT_OFFICIEL ADD CONSTRAINT FK_NOM_CLASSE_OFF FOREIGN KEY (LNK_CLASSE) REFERENCES CLASSE_CONSTAT (ID_CLASSE) ON DELETE SET DEFAULT;
ALTER TABLE CONSTAT_OFFICIEL ADD CONSTRAINT FK_NOM_DOMAINE_OFF FOREIGN KEY (LNK_DOMAINE) REFERENCES DOMAINE_CONSTAT (ID_DOMAINE) ON DELETE SET DEFAULT;
ALTER TABLE CONSTAT_OFFICIEL ADD CONSTRAINT FK_NOM_TEXTE_OFF FOREIGN KEY (LNK_TEXTE) REFERENCES TEXTE_CONSTAT (ID_TEXTE) ON DELETE SET DEFAULT;
Une idée svp ? Où est-ce que je me plante ?
Et comme disait ma grand-mère : il y a toujours du soleil derrière les nuages.