begin process at 2012 05 27 00:12:56
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive SQL

 > 

Archives

 > 

Problème avec une requête

 > 

Problème Multi Jointures avec des Tables possedant des "Trous"


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

Problème Multi Jointures avec des Tables possedant des "Trous"

mardi 3 janvier 2006 à 09:59:53 | Problème Multi Jointures avec des Tables possedant des "Trous"

thefutureisnow

Salut à tous et bonne année Wink Alors je place le décors : j'ai 5 tables : Citation: -patient clef primaire PaNum -adresse clef primaire AdNum clef étrangère PaNum référence à patient -visite clef primaire ViNum clef étrangère PaNum référence à patient -photo clef primaire PhNum clef etrangère ViNum référence à visite clef etrangère Dicode référence à diagnostic PhPath = Nom du fichier image -diagnostic clef primaire DiCode Voila pour les tables, j'aimerais donc faire une requete de sélection de toute les informations (toute les tables) concernant la Photo ayant le nom de fichier REje14M000001 ... en toute logique j'ai essayé cette requete en faisant une jointure entre toutes les tables : Code: SELECT * FROM adresse, diagnostic, patient, photo, visite WHERE adresse.PaNum = patient.PaNum AND patient.PaNum = visite.PaNum AND visite.Vinum = photo.ViNum AND diagnostic.DiCode = photo.DiCode AND photo.PhPath like '%REje14M000001%' Cependant celle ci ne renvoit rien ... Alors qu'une simple jointure + un like : Code: SELECT * FROM photo, visite WHERE visite.Vinum = photo.ViNum And photo.PhPath like '%REje14M000001%' Fonctionne très bien en renvoyant la ligne qui m'interesse cad les information de la visite concerné par la photo ... Le problème vient que la base de donnée à en effet des "trous" ce qui est normal dans mon projet, car je dois détecter justement les "trous" et afficher les problèmes en vus d'un delete ou d'un update par la suite ... Donc est ce possible de créer une requete de jointure qui affiche une ligne même partiel ? Dans mon exemple, le nom de la photo renvois bien une photo existante, se rapportant bien à une visite, cependant cette visite ne se rapporte à aucun client et donc aucune adresse, et aucun diagnostic... J'aurrais donc aimer que la requete fasse une jointure total mais n'affiche que les données existantes cad ici une ligen contenant les informations de la photo et de la visite... Et si il y avait eu un client et une adresse j'aurrais souhaiter que ces informations apparaissent... Bref est ce possible au point de vue SQL ? Pourriez vous me donner un petit coup de pouce car cela fait déja 4 heures que je planche dessus Merci à vous Smile
mardi 3 janvier 2006 à 10:13:57 | Re : Problème Multi Jointures avec des Tables possedant des "Trous"

nhervagault

Administrateur CodeS-SourceS
Salut

SELECT *
FROM patient
LEFT JOIN  visite
on patient.PaNum = visite.PaNum
LEFT JOIN diagnostic
on diagnostic.DiCode = photo.DiCode
LEFT JOIN  adresse
on adresse.PaNum = patient.PaNum
LEFT JOIN photo
on visite.Vinum = photo.ViNum
WHERE
  photo.PhPath like '%REje14M000001%'

Vas te donner peut etre une reponse.

Si du remplace left par Inner les trous de la jointure disparaissent.
INNER JOIN photo
on visite.Vinum = photo.ViNum
Que les lignes ou il y a la relation
INNER JOIN photo
on visite.Vinum = photo.ViNum
si pas de relation --> remplacement par des null



mardi 3 janvier 2006 à 11:23:30 | Re : Problème Multi Jointures avec des Tables possedant des "Trous"

thefutureisnow

Merci pour ta réponse, mais ta requete me renvoi aucune ligne, j'ai testé d'autres requetes qui donne cependant des résultat mais loin de ceux expérés : SELECT * FROM patient P INNER JOIN visite V ON P.PaNum = V.ViNum INNER JOIN photo PH ON V.Vinum = PH.ViNum LEFT OUTER JOIN diagnostic D ON PH.DiCode = D.DiCode LEFT OUTER JOIN adresse A ON P.PaNum = A.PaNum WHERE PH.PhPath LIKE '%REje14M000001%' OR A.AdNum IS NULL OR P.PaNum IS NULL OR V.ViNum IS NULL OR PH.PhNum IS NULL OR D.DiCode IS NULL ou encore : SELECT * FROM patient P INNER JOIN visite V ON P.PaNum = V.ViNum INNER JOIN photo PH ON V.Vinum = PH.ViNum LEFT OUTER JOIN diagnostic D ON PH.DiCode = D.DiCode LEFT OUTER JOIN adresse A ON P.PaNum = A.PaNum WHERE PH.PhPath LIKE '%REje14M000001%' OR A.PaNum IS NULL OR PH.DiCode IS NULL OR PH.ViNum IS NULL OR V.PaNum IS NULL mais rien n't fait ... :(
mardi 3 janvier 2006 à 11:30:00 | Re : Problème Multi Jointures avec des Tables possedant des "Trous"

thefutureisnow

je viens de tester encore cela : SELECT * FROM patient P LEFT JOIN visite V on P.PaNum = V.PaNum LEFT JOIN diagnostic D on D.DiCode = PH.DiCode LEFT JOIN adresse A on A.PaNum = P.PaNum LEFT JOIN photo PH on V.Vinum = PH.ViNum WHERE PH.PhPath like '%REje14M000001%' OR A.AdNum IS NULL OR P.PaNum IS NULL OR V.ViNum IS NULL OR PH.PhNum IS NULL OR D.DiCode IS NULL MySQL controle Center me dit : "ERROR 1120: Cross dependency found in OUTER JOIN. Examine your ON conditions"
mercredi 4 janvier 2006 à 12:31:51 | Re : Problème Multi Jointures avec des Tables possedant des "Trous"

nhervagault

Administrateur CodeS-SourceS
Salut

SELECT *
FROM patient P
LEFT JOIN  visite V on P.PaNum = V.PaNum
LEFT JOIN diagnostic D on D.DiCode = PH.DiCode
LEFT JOIN  adresse A on A.PaNum = P.PaNum
LEFT JOIN photo PH on V.Vinum = PH.ViNum
WHERE  PH.PhPath like '%REje14M000001%'

Ph est utilisé avant d'etre defini

SELECT *
FROM patient P
LEFT JOIN  visite V on P.PaNum = V.PaNum
LEFT JOIN photo PH on V.Vinum = PH.ViNum
LEFT JOIN diagnostic D on D.DiCode = PH.DiCode
LEFT JOIN  adresse A on A.PaNum = P.PaNum
WHERE  PH.PhPath like '%REje14M000001%'
Devrait mieux foinctionner


vendredi 6 janvier 2006 à 15:58:15 | Re : Problème Multi Jointures avec des Tables possedant des "Trous"

thefutureisnow

Réponse acceptée !
Merci pour ta réponse, je l'ai fais en plusieurs requetes, bien plus simple en cas d'erreur :)


Cette discussion est classée dans : photo, tables, clef, visite, panum


Répondre à ce message

Sujets en rapport avec ce message

Nom de table !? [ par jimmy69 ] Bonjour a tous,Je suis en train de realiser un p'tit projet en php avec sql serveur 2000 !J'ai une p'tite question a vous poser !je suis en train de c liste des tables [ par Mouffi ] Bonjour,Je voudrais recuperer le nom des tables d'une base SQl serveur 2000 depuis un programme vb.netmerci d'avance Afficher les tables d'une ou plusieurs bases [ par Rouk ] Bonjour,Je developpe en vb.net avec une connexion a une base Sql.Je souhaiterai afficher dans une ComboBox la liste de base Sql et suite a cela affich Selection de tables [ par Rouk ] Bonjour,je debeloppe en vb.net un datagrid alimente par une base sqlje voudrai faire une selection des tables que j'affiche dans le datagrid.SELECT comment faire une association CIM [ par raziel62 ] Salut,j'ai un probleme sur ma base de donnée qui gere des composants hardware, je n'arrive pas a relier deux tables (constructeur et type_composant).j 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 Sql et disparition de valeurs [ par sky_striker ] Bonjour dans mon programme j'utilise un champ particulier dans mes tables que j'ai appellé la valeur inconnue.Cette valeur porte l'id 0 dans toute mes Probléme de Requéte ( surement simple ) [ par ITALIA ] Je developpe actuellement un programme en vb6 attaquant une base Access 97...et j'ai un souci avec une requête SQL.J'ai deux tables PPM2004 et PPM2005 liaison de données dans SQL Server [ par titoune76 ] Comment faire dans SQL Server pour créer une vue selectionnant plusieurs champs de plusieurs tables (jusque la pas de pb), ces tables se situant dans faire une insertion sur plusieures tables [ par tenrod ] bijour!je voudrais savoir si il est possible d'effectuer un insert sur plusieures tables du genre:insert into latable1, latable2, latable3...values va


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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 : 5,585 sec (3)

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