Sunteți pe pagina 1din 7

Capitolul 4.

Limbajul de interogare relaţional SQL

Se consideră următoarea bază de date:


PACIENT (codpacient, nume, prenume, datanasterii, localitate)
PROGRAMARE (nrprogramare, dataprogramare, oraprogramare, codpacient,nrconsultatie)
CONSULTATIE (nrconsultatie, tipconsultatie, codpacient, dataconsultatie)
MEDICI (codmedic, numemedic, prenumemedic)
MEDIC_CONSULTATIE (nrconsultatie, codmedic)
TARIFE (tipconsultatie, tarif)

Folosind comenzi SQL să se determine:

1. Care sunt pacienţii din Târgovişte;

SELECT *
FROM PACIENT
WHERE localitate=Targoviste”

2. Care sunt pacienţii din Târgovişte şi Titu;

SELECT *
FROM PACIENT
WHERE localitate=Targoviste” or localitate=”Titu”

3. Care pacienţi nu sunt din Târgovişte şi Titu;

SELECT *
FROM

PACIENT
WHERE localitate<>Targoviste” and localitate<>”Titu”

4. Care sunt pacienţii care s-au născut în anul 1989;

SELECT *
FROM PACIENT
WHERE datanasterii >= 01/01/1989 and datanasterii<= 31/12/1989

5. Care sunt tarifele mai mari de 200 lei;

SELECT tarif
FROM TARIFE
WHERE TARIF>= 25

6. Din ce localităţi sunt pacienţii din bază;

SELECT localitate
FROM PACIENT

7. Care este nume şi prenumele medicilor care oferă consultaţii;


SELECT numemedic, prenumemedic
FROM MEDICI INNER JOIN MEDIC_CONSULTATIE ON
MEDICI.codmedic=MEDIC_CONSULTATIE.codmedic

8. Care sunt tarifele practicate;

SELECT tarif
FROM TARIFE

9. Din ce localitate sunt pacienţii născuţi în luna ianuarie 1990;

SELECT localitate
FROM PACIENT
WHERE datanasterii >= 01/01/1990 and datanasterii <= 31/01/1990

10. Care sunt orele pentru care sunt prevăzute consultaţii în data de 23.03.2019;

SELECT oraprogramare
FROM PROGRAMARE
WHERE dataprogramare = 09/02/2019

11. Cum se numesc pacienţii din Târgovişte şi Moreni;

SELECT nume, prenume


FROM PACIENT
WHERE localitate = „Targoviste” or localitate = „Moreni”

12. Care este prenumele medicilor cu numele de familie Ghionea;

SELECT prenumemedic
FROM MEDICI
WHERE numemedic = „Ghionea”

13. La ce data şi la ce oră are programare Popa Georgeta;

SELECT dataprogramare, oraprogramare


FROM PACIENT P INNER JOIN PROGRAMARE PRG
ON P.codpacient = PRG.codpacient
WHERE nume=”Popa” and prenume = „Georgeta”

14. Care sunt datele la care au făcut programare pacienţii din Târgovişte;

SELECT dataprogramare
FROM PACIENT P INNER JOIN PROGRAMARE PRG
ON P.codpacient = PRG.codpacient
WHERE localitate = „Targoviste”

15. Numele pacienţilor care au fost consultaţi în luna februarie 2019;

SELECT nume, prenume


FROM PACIENT P INNER JOIN CONSULTATIE C
ON P.codpacient = C.codpacient
WHERE dataconsultatie >= 01/02/2019 and dataconsultatie <= 28/02/2019

16. Data la care a făcut programare Dinescu Mircea şi Vancea Ioan;

SELECT dataprogramare
FROM PACIENT P INNER JOIN PROGRAMARE PRG
ON P.codpacient = PRG.codpacient
WHERE (nume = „Dinescu” and prenume = „Mircea”) and (nume = „Vancea” and
prenume = „Ioan”

17. Numele medicilor care au acordat consultaţii în data de 23.02.2019;

SELECT numemedic, prenumemedic


FROM MEDICI M INNER JOIN MEDIC_CONSULTATIE MC
ON CONSULTATIE C M.codmedic=MC.codmedic INNER JOIN
ON MC.nrconsultatie=C.nrconsultatie
WHERE dataconsultatie = 23/02/2019

18. De ce medic a fost consultată Popa Georgeta;

SELECT numemedic, prenumemedic


FROM MEDICI M INNER JOIN MEDIC_CONSULTATIE MC
ON M.codmedic=MC.codmedic INNER JOIN CONSULTATIE C
ON MC.nrconsultatie=C.nrconsultatie INNER JOIN PACIENT P
ON C.codpacient = P.codpacient
WHERE nume = „Popa” and prenume = „Georgeta”

19. Numele pacienţilor consultaţi de Grecu Anca;

SELECT numemedic, prenumemedic


FROM MEDICI M INNER JOIN MEDIC_CONSULTATIE MC
ON M.codmedic=MC.codmedic INNER JOIN CONSULTATIE C
ON MC.nrconsultatie=C.nrconsultatie INNER JOIN PACIENT P
ON C.codpacient = P.codpacient
WHERE numemedic = „Grecu” and prenumemedic = „Anca”
20. Nume pacienţilor care au făcut programare şi în luna ianuarie şi în luna februarie 2019;

SELECT nume, prenume


FROM PACIENT INNER JOI PROGRAMARE PRG
ON P.codpacient = PRG.codpacient
WHERE dataprogramare >= 01/01/2019 and dataprogramare <= 31/01/2019
UNION
SELECT nume, prenume
FROM PACIENT INNER JOI PROGRAMARE PRG
ON P.codpacient = PRG.codpacient
WHERE dataprogramare >= 01/02/2019 and dataprogramare <= 28/02/2019

21. Care este tariful consultaţiei pacientului Popa Georgeta;

SELECT tarif
FROM PACIENT P INNER JOI CONSULTATIE C
ON P.codpacient = C.codpcient INNER JOIN TARIFE T
ON C.nrconsultatie = T.nrconsultatie
WHERE nume = „Popa” and prenume = „Georgeta”

22. Numele pacienţilor care au făcut programare în data de 04.03.2019 în intervalul 14-16;

SELECT nume, prenume


FROM PACIENT P INNER JOIN PROGRAMARE PRG
ON P.codpacient = PRG.codpacient
WHERE dataprogramare = 10/02/2019 and oraprogramare >= 14 and oraprogramare
<=16

23. Datele la care au efectuat consultaţii Grecu Anca şi Minea Ion în luna februarie 2019;

SELECT dataconsultatie
FROM MEDICI M INNER JOIN MEDIC_CONSULTATIE MC
ON M.codmedic=MC.codmedic INNER JOIN CONSULTATIE C
ON MC.nrconsultatie=C.nrconsultatie INNER JOIN PACIENT P
ON C.codpacient = P.codpacient
WHERE (numemedic = „Grecu” and prenumemedic = „Anca”)
OR (numemedic = „Minea” and prenumemedic = „Ioan”)
and (dataconsultatie >= 01/02/2019 and dataconsultatie <= 28/02/2019)
24. Numele şi prenumele medicilor care au consultat pacienţi din Târgovişte şi Moreni dar nu din Titu;
(exemplificare în SQL 92)
SELECT numemedic, prenumemedic
FROM MEDICI M, MEDIC_CONSULTATIE MC, CONSULTATIE C,
PACIENT P
WHERE M.codmedic=MC.codmedic and
MC.nrconsultatie=C.nrconsultatie and C.codpacient =
P.codpacient localitate = „Targoviste”
INTERSECT
SELECT numemedic, prenumemedic
FROM MEDICI M, MEDIC_CONSULTATIE MC, CONSULTATIE C,
PACIENT P
WHERE M.codmedic=MC.codmedic and
MC.nrconsultatie=C.nrconsultatie and C.codpacient =
P.codpacient localitate = „Moreni”
MINUS
SELECT numemedic, prenumemedic
FROM MEDICI M, MEDIC_CONSULTATIE MC, CONSULTATIE C,
PACIENT P
WHERE M.codmedic=MC.codmedic and
MC.nrconsultatie=C.nrconsultatie and C.codpacient =
P.codpacient localitate = „Titu”

25. Nume pacienţilor care au avut programare în data de 04.03.2019 în intervalul 12-14 şi au fost
consultaţi de către Grecu Anca.

SELECT nume, prenume


FROM MEDICI M INNER JOIN MEDIC_CONSULTATIE MC
ON M.codmedic=MC.codmedic INNER JOIN CONSULTATIE C
ON MC.nrconsultatie=C.nrconsultatie INNER JOIN PACIENT P
ON C.codpacient = P.codpacient
WHERE dataconsultatie=10/02/2019 AND (oraconsultatie>=12 and oraconsultatie <=14)
AND (numemedic=”Grecu” and prenumemedic=”Anca”)

26. Numele şi prenumele în ordine alfabetică al pacienţilor pe localităţi;

SELECT nume, prenume


FROM PACIENT
ORDER BY nume, prenume
GROUP BY localitate

27. Numele şi prenumele pacienţilor pe zile de programare;

SELECT nume, prenume


FROM PACIENT P INNER JOIN PROGRAMARE PRG
ON P.codpacient=PRG.codpacient
GROUP BY dataprogramare

28. Numele şi prenumele pacienţilor pe zile de consultaţie;


SELECT nume, prenume
FROM PACIENT P INNER JOI PROGRAMARE PRG
ON P.codpacient=PRG.codpacient INNER JOIN CONSULTATIE C
ON PRG.nrconsultatie=C.nrconsultatie
GROUP BY dataconsultatie

29. Câte consultaţii a acordat Grecu Anca în luna februarie 2019;

SELECT COUNT(*) AS nrconsultatii


FROM MEDICI M INNER JOIN MEDIC_CONSULTATIE MC
ON M.codmedic=MC.codmedic INNER JOIN CONSULTATIE C
ON MC.nrconsultatie=C.nrconsultatie INNER JOIN PACIENT P
ON C.codpacient = P.codpacient
WHERE (dataconsultatie>=01/02/2019 and dataconsultatie<=28/02/2019)
AND (numemedic=”Grecu” and prenumemedic=”Anca”)

30. Cât a primit Grecu Anca în luna februarie 2019 pentru consultaţiile acordate, ştiut fiind faptul că
fiecare medic primeşte un onorariu de 10 RON pentru fiecare consultaţie acordată;

SELECT COUNT(*) AS nrconsultatii, COUNT(*)*10 as onorariu


FROM MEDICI M INNER JOIN MEDIC_CONSULTATIE MC
ON M.codmedic=MC.codmedic INNER JOIN CONSULTATIE C
ON MC.nrconsultatie=C.nrconsultatie
WHERE dataconsultatie>=01/02/2019 and dataconsultatie<=28/02/2019
AND (numemedic=”Grecu” and prenumemedic=”Anca”)

31. Câte programări a făcut pacientul Popa Georgeta;

SELECT COUNT(*) AS programari


FROM PACIENT P INNER JOIN PROGRAMARE PRG
ON P.codpacient=PRG.codpacient

NOTĂ: Rezolvările prezentate nu sunt restrictive. Pot fi avute în vedere şi alte soluţii.

S-ar putea să vă placă și