par
Amélie » 28 déc. 2012, 14:23
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 :
select nomm,prenomm,count(numas)
from patient,medecin
group by matriculem
having(
matriculem=matricule and count(numas)=
(select max(champ)
from (select count(numas) as champ
from patient group by matriculem) y));
--> cela ne fonctionne pas
mais quand j'écris (en suivant les messages de postgres) :
select nomm,prem,count(numas)
from patient,medecin
group by matriculem,medecin.nomm,medecin.prenomm,medecin.matricule
having(
matriculem=matricule and count(numas)=
(select max(champ)
from (select count(numas) as champ
from patient group by matriculem) y));
--> 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.
Bonjour
J'ai une base de données permettant la gestion entre les medecins et leurs patients et contenant les tables suivantes :
PATIENT ([u]numAs[/u], nomp, prenomp, sexe, dateNaiss, matriculem#)
MEDECIN ([u]matricule[/u], nomm, prenomm, specialite, ville, adr)
CONSULTE ([u]matricule#[/u], [u]numAs#[/u], [u]date[/u], 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 :
[sql]select nomm,prenomm,count(numas)
from patient,medecin
group by matriculem
having(
matriculem=matricule and count(numas)=
(select max(champ)
from (select count(numas) as champ
from patient group by matriculem) y));[/sql]
--> cela ne fonctionne pas
mais quand j'écris (en suivant les messages de postgres) :
[sql]select nomm,prem,count(numas)
from patient,medecin
group by matriculem,medecin.nomm,medecin.prenomm,medecin.matricule
having(
matriculem=matricule and count(numas)=
(select max(champ)
from (select count(numas) as champ
from patient group by matriculem) y));[/sql]
--> 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.