Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Problème de jointure [ Archives / Problème avec une requête ] (vincentstryckmans)

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é 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...

CalendriCode

Novembre 2008
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,218 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.