Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours 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 01/08/2011, 12h31   #1
Invité de passage
 
Homme José MARIE
Responsable de service informatique
Inscription : août 2011
Messages : 5
Détails du profil
Informations personnelles :
Nom : Homme José MARIE
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Santé

Informations forums :
Inscription : août 2011
Messages : 5
Points : 0
Points : 0
Par défaut Problème de jointure SQL

Bonjour à tous,
j'ai un problème avec les jointures de ma requête SQL.
Voilà le problème :Quant le le numéro du medecin n'est pas renseigné (Num_Med_LEG) la ligne n'est pas retournée même en inscrivant LEFT ou FULL.
Je vous joins la requête:
Code :
1
2
3
4
5
6
7
8
9
SELECT Reference, Date_Prelev, Nom, Num_Id_Externe, Date_Recep, Prenom, 
Circons_Deces, T_Medecin_Leg.Nom_Med_Leg, T_Medecin_Leg_BIS.Nom_Med_Leg, 
T_Demandeur.Nom_Demandeur, Num_Dossier 
FROM T_Demandeur INNER JOIN ((T_Medecin_Leg INNER JOIN T_Dossier 
ON T_Medecin_Leg.Num_Med_Leg = T_Dossier.Num_Med_Leg)LEFT JOIN T_Medecin_Leg AS T_Medecin_Leg_BIS 
ON T_Dossier.Num_Med_Leg_2 = T_Medecin_Leg_BIS.Num_Med_Leg) 
ON T_Demandeur.Num_Demandeur = T_Dossier.Num_Demandeur 
WHERE Reference LIKE 'LUM%' AND Date_Enreg BETWEEN '2011-07-28' AND '2011-08-3' 
ORDER BY Num_Dossier
Merci pour l'aide que vous pourriez m'apporter
jose26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2011, 15h09   #2
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 639
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 639
Points : 2 632
Points : 2 632
bonjour,

quelle est votre requete avec le left outer join ?
punkoff est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2011, 15h35   #3
Membre émérite
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 697
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 697
Points : 837
Points : 837
il y a quelque chose curieux avec les parenthèses dans la clause FROM ?!
Non ?
dehorter olivier est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2011, 16h43   #4
Invité de passage
 
Homme José MARIE
Responsable de service informatique
Inscription : août 2011
Messages : 5
Détails du profil
Informations personnelles :
Nom : Homme José MARIE
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Santé

Informations forums :
Inscription : août 2011
Messages : 5
Points : 0
Points : 0
Pour être plus claire, la requête fonctionne mais elle ne renvoie pas les ligne dont les médecins légistes sont égaux à Null.
J'ai essayé de mettre la commande LEFT OUTER JOIN et FULL OUTER JOIN mais je n'obtiens toujours pas les lignes.

Merci pour vos réponses
jose26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2011, 16h51   #5
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 639
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 639
Points : 2 632
Points : 2 632
je ré-itère ma question .. qu'elle est votre requete avec le left outer join ?
punkoff est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2011, 16h51   #6
Membre émérite
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 697
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 697
Points : 837
Points : 837
et comme cela :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
   SELECT Reference,
                 Date_prelev,
                 Nom,
                 Num_id_externe,
                 Date_recep,
                 Prenom,
                 Circons_deces,
                 T_medecin_leg.Nom_med_leg,
                 T_medecin_leg_bis.Nom_med_leg,
                 T_demandeur.Nom_demandeur,
                 Num_dossier
            FROM T_dossier
              INNER JOIN T_demandeur ON T_demandeur.Num_demandeur = T_dossier.Num_demandeur
              INNER JOIN T_medecin_leg ON T_medecin_leg.Num_med_leg = T_dossier.Num_med_leg
              LEFT JOIN T_medecin_leg AS T_medecin_leg_bis ON T_dossier.Num_med_leg_2 = T_medecin_leg_bis.Num_med_leg
          WHERE Reference LIKE 'LUM%'
                AND Date_enreg BETWEEN '2011-07-28' AND '2011-08-3'
          ORDER BY Num_dossier
dehorter olivier est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2011, 16h54   #7
Membre Expert
 
Avatar de Yanika_bzh
 
Homme Yannick
Ingénieur Etudes & Developpements
Inscription : février 2006
Messages : 1 125
Détails du profil
Informations personnelles :
Nom : Homme Yannick
Localisation : France, Deux Sèvres (Poitou Charente)

Informations professionnelles :
Activité : Ingénieur Etudes & Developpements
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2006
Messages : 1 125
Points : 1 670
Points : 1 670
Vous dites que la requete fonctionne ??
Quel est votre SGBD, car la construction de la requete me parait douteuse ...

De plus la clause

Code :
BETWEEN '2011-07-28' AND '2011-08-3'
Est fonctionnellement invalide car le 10 aout 2011 sera codé '2011-08-10' et sera compris entre '2011-07-28' et '2011-08-3' ce qui n'est evidemment pas vrai (comparaison de chaine de caracteres).

Bon courage
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)
Yanika_bzh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 07h51   #8
Invité de passage
 
Homme José MARIE
Responsable de service informatique
Inscription : août 2011
Messages : 5
Détails du profil
Informations personnelles :
Nom : Homme José MARIE
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Santé

Informations forums :
Inscription : août 2011
Messages : 5
Points : 0
Points : 0
Bonjour,
Oui la requête fonctionne. Mon SGBD est un SQL Serveur 2008 en anglais expliquant le codage de la date AAAA-MM-JJ.
Désolé de cette pause mais les helvetiques avaient une fête hier.
Je vais essayer la requête d'Oliver ce matin.
merci encore de votre aide
jose26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 08h02   #9
Invité de passage
 
Homme José MARIE
Responsable de service informatique
Inscription : août 2011
Messages : 5
Détails du profil
Informations personnelles :
Nom : Homme José MARIE
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Santé

Informations forums :
Inscription : août 2011
Messages : 5
Points : 0
Points : 0
Je viens de la tester. Le problème reste présent. Pour les médecins légistes qui ne sont pas renseignés, les lignes ne s'affichent pas. Par contre, lorsqu'il n'y a qu'un médecin légiste sur les deux possibles, le deuxième est bien mis à NULL si il n'est pas renseigné.
je continue de chercher de mon côté.
merci à tous pour votre aide
jose26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 08h09   #10
Invité de passage
 
Homme José MARIE
Responsable de service informatique
Inscription : août 2011
Messages : 5
Détails du profil
Informations personnelles :
Nom : Homme José MARIE
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Santé

Informations forums :
Inscription : août 2011
Messages : 5
Points : 0
Points : 0
Merci Olivier
je viens de trouver en mettant LEFT JOIN dans la première jointure du médecin légiste.
Merci encore
jose26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h47.


 
 
 
 
Partenaires

Hébergement Web