begin process at 2010 03 20 04:36:15
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive SQL

 > 

Archives

 > 

Problème avec une requête

 > 

Problème de jointure


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème de jointure

mercredi 14 décembre 2005 à 12:10:22 | Problème de jointure

vincentstryckmans

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.
Vincent Stryckmans.

mercredi 14 décembre 2005 à 15:20:31 | Re : Problème de jointure

aieeeuuuuu

Réponse acceptée !
salut,

as tu essayé avec un FULL OUTER JOIN quand tu fais des jointures sur les tables qui n'ont pas forcement de resultat ?


Cette discussion est classée dans : id, lnk, officiel, identif, constat


Répondre à ce message

Sujets en rapport avec ce message

if dans une procédure stocké ? [ par jesusonline ] Bonjour, je ne connais pas encore SQLj'ai une table articles qui a un champ ID et je voudrais une fonction stocké qui prend en paramètre un ID et qui Requete utilisant un IF (?) [ par Gamer_man ] Bonjour :)J'ai un petit probleme avec une requete...J'explique un peu :Sur mon site, il est possible de poster des commentaires en etant membre ou en 2 liens entre 2 tables [ par fstyle ] Bonjour/soirJe suis en train de créer un système pour gérer ma comptabilité ...et je suis devant un problème !Dans mon mld, il y a 2 tables : t_compta Faire plusieurs if dans un procedure stockee [ par chris81 ] bonjour,comment puis je faire pour verifier plusiseurs if dans la meme procedure stockee c'est a direif not exist(SELECT Id FROM...) et if not exists( Select sans doublon avec date la plus recente [ par ironnyc ] Bonjour a tous!je cherche a faire une requete Select avec une base MySql sur la table suivante: #Table "historique"+-----+-------------+------------+| Tri, comment??? [ par Fildomen ] Salut j'ai par exemple une table ou sont stocké des gens avec leur id (TGens), et une autre qui contient les noms de leur enfant (TEnfants)  (id du pè 3 tables 1 requête [ par kclito ] bonjours, (j'avoue que je ne savais pas si je devais mettre ça dans le forum php ou sql ....) Je vous explique mon problème J'ai 3 tables CATEGORIE requete SQL [ par djodjo07 ] Je cherche une requete SQL pour trier mes ID.. en fait j'aimerais par exemple récupérer des données a partir de l'ID 40 ! Je débute ! Merci une requete qui me casse la tête [ par chmouette ] Salut les gens!Mon problème est purement SQL. J'ai une table Ma Table avec des champs tels que :+-------------------------+ !            MaTable  &nbs auto increment [ par bob ] Bonsoir ! Alors voila, j'ai une question qui va etre surement trés simple pour vousvoila le sql de mla table CREATE TABLE `blogs` ( `id` smallint(6)


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,234 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales