|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() khaltik anass Inscription : février 2010 Messages : 6 ![]() |
bonjour ! il me reste une question question dans un exercice alors j'ai besoin de votre aide a la résoudre j'ai déjà essayer avec plusieurs manière sans arriver a une solution correcte
Voila Les Tables : Médecin ( Idmedecin,nom,prénom,Ddn,Sexe,#Idspecialite) Spécialité(Idspecialite,libelle) Patient(Idpatient,nom,prénom,Ddn,sexe,adresse) soigne(Idsoin,#Idmedecin,#Idpatient,nommaladie,comme,taire,date_soigne) Question écrire une procédure stocké qui permet : -d'afficher le nom , le prénom et le numéro des patients ayant été suivi par au moins deux médecins de spécialité différente Code :
SELECT Idpatient,Nom,Prenom FROM Patient WHERE Idpatient IN ( SELECT Idpatient FROM Soigne GROUP BY Idpatient HAVING COUNT(Idmedecin)>=2) je sais que ce n'est pas une procédure mais ce qui m'intéresse c'est instructions de cette dernier |
|
|
00
|
|
|
#2 | |
|
Expert Confirmé
![]() ![]() |
il faut déjà découper la requête en 2 étapes.
1 - il te faut rechercher tous les patients ayant eu 2 médecins de 2 spécialitées différentes. Ta sous requête n'est pas complète puisque tu affiches les informations pour 2 médecins sans tenir compte de leur spécialité. 2 - Une fois que tu as extraits tes patients, il te faut faire une jointure, ou procédé à une sous requête telle que tu l'as faite avec comme critère d'égalité l'identifiant ressorti de ta sous requête. Je ne te ferais pas la requête, je te laisse réfléchir à ta sous requête, car tout ton problème viens de là. Une fois que celle-ci sera faite, le reste ira tout seul. Cordialement, Si tu as des questions n'hésite pas les poster.
__________________
Citation:
|
|
|
|
00
|
|
|
#3 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 930 ![]() |
Deux façons de faire :
1) par jointures avec une double jointure medecin/spécialité avec medcin1.id <> medecin2.id 2) par opération ensembliste UNION puis synthese. A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#4 |
|
Invité de passage
![]() khaltik anass Inscription : février 2010 Messages : 6 ![]() |
Merci Pour Vos Réponses
Je vais essayer j'ai ajouter DISTINCT a Having pour éviter les même médecin même su j'arrive pas a comparer la spécialité d'un médecin avec les autres sans le faire avec lui même Code :
SELECT Idpatient,Nom,Prenom FROM Patient WHERE Idpatient IN ( SELECT Idpatient FROM Soigne GROUP BY Idpatient HAVING COUNT(DISTINCT Idmedecin)>=2) |
|
|
00
|
|
|
#5 | |
|
Expert Confirmé
![]() ![]() |
Mais ton ID médecin seule ne te permet pas de savoir si ces deux praticiens possèdent la même spécialité.
__________________
Citation:
|
|
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() khaltik anass Inscription : février 2010 Messages : 6 ![]() |
oui ou je sais qu'il me manque une sous requête par ce que il s'affiche les patients ayant été suivi par au moins deux médecin alors il me reste la condition de spécialité différente je vais essayer de le résoudre
|
|
|
00
|
|
|
#7 | ||
![]() ![]() |
Il suffit de rajouter une jointure dans votre sous-requête :
Code :
__________________
Email : http://scr.im/waldar |
||
|
00
|
|
|
#8 | ||
|
Invité de passage
![]() khaltik anass Inscription : février 2010 Messages : 6 ![]() |
merci a vous tous
Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com