0% ont trouvé ce document utile (0 vote)
232 vues2 pages

Requêtes SQL pour gestion hospitalière et hôtelière

Ce document décrit plusieurs requêtes SQL portant sur une base de données décrivant des stations de ski, leurs activités et leurs hôtels. Les requêtes interrogent les tables Station, Activité et Hotel pour retourner des informations sur les activités proposées dans certaines stations, les hôtels situés dans ces stations ou ayant certaines caractéristiques.

Transféré par

brahim zerrouk
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
232 vues2 pages

Requêtes SQL pour gestion hospitalière et hôtelière

Ce document décrit plusieurs requêtes SQL portant sur une base de données décrivant des stations de ski, leurs activités et leurs hôtels. Les requêtes interrogent les tables Station, Activité et Hotel pour retourner des informations sur les activités proposées dans certaines stations, les hôtels situés dans ces stations ou ayant certaines caractéristiques.

Transféré par

brahim zerrouk
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

3. Donner pour chaque service, son nom, son bâtiment, ainsi que les ON [Link]= R.

no_docteur) K
prénom, nom et spécialité de son directeur. WHERE [Link]=[Link]
select [Link], batiment, [Link], [Link] from service S, employe E, docte GROUP BY [Link], [Link];
ur D
Where [Link]= [Link] And [Link] = directeur; 3 tuples 12. Bâtiment et numéro des chambres occupées par au moins un malade
(hospitalisé).
4. Donner pour chaque lit occupé du bâtiment « B » de l’hôpital occupé SELECT [Link],H.no_chambre
par un malade affilié à une mutuelle dont le nom commence par « MN... », FROM Service S,Hospitalisation H
le numéro du lit, le numéro de la chambre, le nom du service ainsi que le WHERE EXISTS (SELECT H.no_chambre WHERE [Link]=H.code_service)
prénom, le nom et la mutuelle du malade l’occupant. GROUP BY [Link],H.no_chambre; 23 Tuples
SELECT lit, H.no_chambre, [Link], [Link], [Link], mutuelle FROM serv
ice S, malade M, 13. Bâtiment et numéro des chambres vides (aucun malade n’y est
hospitalisation H hospitalisé).
WHERE batiment ='B' AND mutuelle like 'MN%' AND [Link] = H.no_ma A | 106
lade AND [Link] = code_service; 3 tuples. SELECT DISTINCT [Link], C.no_chambre
FROM service S, chambre C
5. Quelle est la moyenne des salaires des infirmiers(ères) par service ? WHERE C.code_service=[Link]
CAR 1588.42, CHG 1472.38, REA 1370.58 AND NOT EXISTS ( SELECT * FROM hospitalisation H
SELECT [Link], AVG(salaire) FROM infirmier, service S WHERE code_service WHERE H.no_chambre=C.no_chambre and
=[Link] GROUP BY [Link] H.code_service=C.code_service);

6. Pour chaque service du bâtiment "A" de l’hôpital, quel est le nombre


moyen de lits
Les patients soignées par des cardiologues, vue définie par
SELECT [Link], AVG(nb_lits) FROM service S, chambre C
WHERE batiment='A'AND [Link]=code_service GROUP BY [Link]; 2 Tuples. le schéma suivant: PatientCardio(NomMed, NomPat,
PrenomPat, Tel,Adresse,Mutuelle)
7. Pour chaque malade soigné par plus de 3 médecins donner le nombre
total de ses médecins ainsi que le nombre correspondant de spécialités CREATE VIEW PatientsCardio (Nom_Med, Nom_Pat,
Prenom_Pat, Tel, Adresse, Mutuelle)
médicales concernées.
AS SELECT [Link], [Link], [Link], [Link],
SELECT [Link], [Link], COUNT(S.no_docteur), [Link],[Link]
COUNT (DISTINCT [Link]) FROM Malade M, soigne s, docteur D FROM employe E, malade M,docteur D,soigne S
WHERE S.no_docteur= [Link] AND S.no_malade= [Link] GROUP B WHERE [Link]= [Link] AND
Y [Link] HAVING COUNT (s.no_docteur)>3 ; 8 tuples [Link]='Cardiologue'
AND [Link]= S.no_malade
8. Pour chaque service quel est le rapport entre le nombre AND [Link]=S.no_docteur;
d’infirmier(ères) affecté(es) au service et le nombre de malades
hospitalisés dans le service ?
Nombre de malades hospitalisés par service .
Cardiologie 0.8889
SERVICE_SOIGNE(NomService, Directeur, NbSoigné)
Chirurgie generale 0.6500
Reanimation et Traumatologie 0.7000 CREATE VIEW Service_Soigne ( Nom_Service,
SELECT [Link], COUNT (DISTINCT [Link])::float/COUNT (DISTINCT H.no_ Directeur, Nb_Soigné)
malade) AS SELECT [Link], directeur, Count(H.no_malade)
FROM service S, hospitalisation H, infirmier I FROM Service S, Hospitalisation H
WHERE [Link]=I.code_service and H.code_service=[Link] WHERE Code_service= [Link]
GROUP BY [Link],directeur;
GROUP BY [Link];

9. Prénom et nom des docteurs ayant au moins un malade hospitalisé. Utilisation Recursive de vues. Nombre de patients hospitalisés
SELECT [Link], [Link] from employe E, docteur D, soigne S, hospitalisat par médecin. Vous devez utiliser la vue définie par la question
ion H 1. MED-SOIGNE(Nom, NbPatient)
WHERE [Link]=[Link] and H.no_malade=S.no_malade and S.no_do
CREATE VIEW MED_SOIGNE (Nom, Nb_patient)
cteur=[Link] AS SELECT Nom_med, Count(Distinct Nom_pat)
GROUP BY [Link], [Link] HAVING COUNT( H.no_malade)>=1 ;26 Tuples FROM PatientsCardio, hospitalisation H, malade M
WHERE Nom_pat=[Link]
10. Prénom et nom des docteurs n’ayant aucun malade hospitalisé. AND [Link]= H.no_malade
SELECT [Link], [Link] GROUP BY Nom_med;
FROM employe E, docteur D
WHERE [Link]=[Link] AND
Utilisation Simple. Donner les noms des patients vues par le Dr.
NOT EXISTS (SELECT * FROM soigne S, hospitalisation H
Albert.
WHERE H.no_malade=S.no_malade and S.no_docteur=[Link]);6 Tuples
SELECT P.Nom_Pat
11. Pour chaque docteur, retrouver le nombre de ses malades hospitalisés, FROM PatientsCardio P
y compris ceux dont le nombre est 0. WHERE P.Nom_Med='Albert';
SELECT [Link], [Link], COUNT( H.no_malade) Malade_Hospitalisés
FROM employe E, hospitalisation H, soigne S Utilisation d’une vue aggregat. Donner le nombre de malades
WHERE [Link]= S.no_docteur AND H.no_malade= S.no_malade soignés en "pédiatrie".
GROUP BY [Link], [Link]
UNION SELECT nom_service, PS.Nb_soigné
SELECT DISTINCT [Link], [Link], 0 FROM SERVICE_SOIGNE PS
WHERE PS.nom_service='Chirurgie generale';
FROM employe E, docteur D
WHERE [Link]=[Link]
AND [Link] NOT IN (SELECT S.no_docteur FROM soigne S,hospitalisatio
nH
WHERE S.no_malade=H.no_malade);
*****----------------2eme--methode----------------*****
SELECT [Link], [Link], COUNT(*) Malades_hospitalilsés
FROM employe E, (docteur D LEFT JOIN ( soigne S JOIN hospitalisation H on
H.no_malade = S.no_malade)R

1
4°) Requete SQL

SELECT [Link], [Link], [Link]é

FROM Satation S, Activité A WHERE [Link]=’Alpes’ AND


S.N°station=A.N°Station;

5°).
Station Activité
/

Région= ‘Alpes »

N°Station=N°Station

Nom / Altitude / Nom_Activité

6°) SELECT [Link], [Link] FROM Hotel H, Altitude A

WHERE A.N°Station NOT IN (Select A.N° station FROM Activité A WHERE


[Link]é=’Snowboard”)

AND [Link]é=’SKI’ AND A.N°station = H.N°Station;

7°) SELECT [Link]

FROM Hotel H, Station S WHERE H.N°station= S.N°station

AND [Link] <(SELECT AVG ([Link]) FORM Station S);

8°) SELECT Act_NomActivité, COUNT (DISTINCT H.N°Hotel), Act


Hotel : 1°) Nom_Station

FROM ACT_STA Act, Hotel H, Station S


Station Hotel
1-n 1-1 WHERE [Link]= S.nom_stat AND S.N°Station=H.N°station
1-n
E
*nom station n
*nom hotel GROUP BY Act_NomActivité HAVING COUNT (DISTINCT H.N°Hotel) >=5 ;
t
o
*Altitude u
*Adresse hot/*Tel *1----------**********-------------------*****

*Région *Categor/*nbr chambr CREATE TABLE Medecin (Nom VARCHAR NOT NULL, Specialite VARCHAR
NOT NULL, Nombre_pat INTEGER);
1-n INSERT INTO Medecin VALUES ('House', 'Pediatrie', 38); ----- Insertion
P Tuple par tuple
r D
é INSERT INTO Medecin (Nom,Specialite,Nombre_pat)
1-1 VALUES ('Baggio','Cardiologie',12), ('Batistuta','Psychiatrie',25),
('Platini','Chirurgie géneral',10),; -Insert de plusiers tuples en m^m temps.
Activité Prix_Chambre
Insert into Medecin
1-1
SELECT [Link],[Link], count (Distinct H.no_malade)
*nom Activité *Prix / *type chambre
from docteur D, employe E, hospitalisation H, Malade M, Soigne SO
*Typ client /* Saison WHERE [Link]=H.no_malade and SO.no_malade=H.no_malade
AND SO.no_docteur=[Link]
AND [Link]=[Link]
Group by [Link],[Link];
2°) CREATE TABLE HOTEL (Nom_Hot VARCHAR NOT NULL,
UPDATE medecin
Adrese_Hot VARCHAR NOT NULL, Tel VARCHAR NOT NULL
SET Nombre_pat=Nombre_pat-10
Categorie VARCHAR NOT NULL, Nb_Chambre INTEGER) WHERE Nombre_pat>10
AND Specialite='Cardiologie';
CHECK (Nb_chambre <=100) CHECK ( Categorie =’*’ or ‘**’ or ‘***’);

3°) schema physique on rajoute “PRIX_chambre »up.

Vous aimerez peut-être aussi