|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Étudiant Inscription : décembre 2012 Messages : 5 ![]() |
Bonjour
J'ai une base de données permettant la gestion entre les medecins et leurs patients et contenant les tables suivantes : PATIENT (numAs, nomp, prenomp, sexe, dateNaiss, matriculem#) MEDECIN (matricule, nomm, prenomm, specialite, ville, adr) CONSULTE (matricule#, numAs#, date, diagnostic,numOrd#) indication: matriculem est une clè étrangère qui a pour référence medecin(matricule) je dois écrire la requête SQL qui permet de : "Afficher le nom et le prénom du ou des médecins qui sont médecins traitants du plus grand nombre de patients " quand j'écris : Code :
mais quand j'écris (en suivant les messages de postgres) Code :
--> cela fonctionne très bien cependant je ne vois pas pourquoi j'ai à ajouter au 'group by' le nomm le prenomm et la matricule de la table medecin. quelqu'un pourrait m'expliquer cela ? et aussi,j'aimerais bien savoir s'il y a une façon plus simple(plus claire) pour écrire cette requête. |
||||
|
|
00
|
|
|
#2 | ||||
|
Expert Confirmé
![]() Inscription : août 2008 Messages : 1 716 ![]() |
Citation:
Citation:
Code :
|
||||
|
|
00
|
|
|
#3 | |||||||||||
![]() ![]() |
Il ya aurait beaucoup de choses à revoir dans la BDD et dans ces requêtes !
1) Citation:
Ce numéro, comme le matricule du médecin, surtout si ce dernier n'est pas entièrement numériques, sont de mauvaises clés. La ville devrait être externalisée dans une table des villes afin d'éviter d'avoir plusieurs fois la même ville orthographiée de différentes manières. Idem pour la spécialité du médecin. 2) Citation:
3) Les jointures s'écrivent depuis 20 ans avec l'opérateur JOIN. Il serait temps de s'y mettre ! Et même écrite à l'ancienne, la condition de jointure ne se met pas dans le HAVING ! 4) Citation:
A) Nombre de patients par médecin : Code :
Code :
Code :
Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
|||||||||||
|
10
|
|
|
#4 | ||||
|
Invité de passage
![]() Étudiant Inscription : décembre 2012 Messages : 5 ![]() |
Merci pour votre réponse très rapide
Citation:
1) Il paraît que j'avais encore de graves lacunes mais avec vos aides et un peu de lecture en suivant les liens indiqués, j'ai commencé à y remédier... Citation:
2) Ce code me paraît vraiment très net,simple mais aussi court Merci encore |
||||
|
|
00
|
|
|
#5 | ||||||||||||||
|
Invité de passage
![]() Étudiant Inscription : décembre 2012 Messages : 5 ![]() |
Merci pour vos réponses rapides et fructueuses
Citation:
PATIENT (numAs, nomp, prenomp, sexe, dateNaiss, matriculem#) MEDECIN (matricule, nomm, prenomm, specialite, ville, adr) CONSULTE (matricule#, numAs#, date, diagnostic,numOrd#) J'ai quand même saisi ce que vous voulez dire et ce qu'il manque à l'exercice Citation:
2) Il paraît que j'avais encore de graves lacunes mais avec vos aides et un peu de lecture, j'ai commencé à y remédier... Citation:
Citation:
toutefois, ici on a matricule(table medecin et consulte) et matriculem(table patient), il y a donc une confusion d'utilisation de matricule et matriculem dans votre code. Encore faute de clarté de l'exercice, à la fin vous avez utilisé la table CONSULTE pour la jointure au lieu de la table PATIENT alors que le médecin traitant est repéré par son "matriculem" dans la table patient, et le consultant par son "matricule" dans la table CONSULTE, et nous cherchons le médecin traitant. D'autre part, le HAVING doit en principe être après le GROUP BY. Alors, le beau code final: Code :
|
||||||||||||||
|
|
00
|
|
|
#6 | ||
|
Invité de passage
![]() Étudiant Inscription : décembre 2012 Messages : 5 ![]() |
Pour voir si j'ai bien appris la bonne démarche à suivre pour écrire mes requêtes SQL,
et afin d'afficher les noms de tous les patients qui ont visité tous les médecins radiologues de leurs régions, pourriez-vous me dire si ce code(il donne bien le résultat désiré) est bon et clair ? y a t-il plus simple ? J'ai du ajouter la colonne "villep" à la table PATIENT. Code :
|
||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com