Documente Academic
Documente Profesional
Documente Cultură
1. Partea teoretica
sau
SELECT nume,functie,salariu FROM personal WHERE id_facultate=1
UNION ALL
SELECT nume,functie,salariu FROM personal WHERE id_facultate=2
La Access sunt implementaţi operatorii LEFT JOIN şi RIGHT JOIN în clauza FROM,
specificănd joncţiunea externă şi partea deficitară de informaţie astfel:
FROM tabel1 LEFT JOIN tabel2 ON tabel1.coloană1 operatorComparaţie
tabel2.coloană2
LEFT JOIN înseamnă afişarea informaţiei din tabelul din stânga chiar dacă în partea
dreaptă nu există informaţie asociată aceseia.
In acest caz nu mai este necesară specificarea condiţiei de joncţiune în clauza WHERE.
Exemplu:
SELECT personal.nume, facultati.nume_facultate
FROM personal RIGHT JOIN facultati ON personal.id_facultate=facultati.id_facultate
2. Partea practica
3. Afisati numele, facultatea, specializarea si taxa studentilor cu taxa mai mare de 400.
SELECT s.nume,sp.nume_spec, f.nume_facultate FROM studenti AS s, specializari
AS sp, facultati AS f WHERE s.id_spec=sp.id_spec AND
sp.id_facultate=f.id_facultate AND s.valoaretaxa>400;
7. Afisati numele angajatilor, functia, salariul, gradul si numele facultatii pentru angajatii
care nu apartin departamentului “Auxiliari”, ordonati descrescator dupa salariu.
SELECT p.nume,p.functie, p.salariu, b.grad, f.nume_facultate FROM personal AS p,
BaremSalariu AS b, facultati AS f WHERE p.salariu BETWEEN b.sal_min AND
b.sal_max AND p.id_facultate=f.id_facultate AND
UCASE(f.nume_facultate)<>"AUXILIARI" ORDER BY p.salariu DESC;
8. Afisati numele angajatilor, functia, facultatea, salariul si impozitul, calculat din tabelul
Baremsalariu, in ordine alfabetica dupa nume pe facultati.
SELECT p.nume,p.functie, p.salariu, f.nume_facultate,
b.impozitfix+b.procent/100*p.salariu AS impozit FROM personal AS p, BaremSalariu
AS b, facultati AS f WHERE p.salariu BETWEEN b.sal_min AND b.sal_max AND
p.id_facultate=f.id_facultate ORDER BY f.nume_facultate, p.nume;
12. Gasiti functia care a fost ocupata in prima jumatate a anului 1999 si in aceeasi
perioada a anului 2000.
SELECT p.functie FROM personal AS p INNER JOIN personal AS s ON
p.functie=s.functie WHERE (p.data_angajare BETWEEN #01/01/1999# AND
#30/06/1999#) AND (s.data_angajare BETWEEN #01/01/2000# AND #30/06/2000#);
14. Afisati studentii fara taxa impreuna cu denumirea facultatii, specializarii, anul de
studiu si grupa, in ordinea facultatilor, specializarilor, anului de studiu, grupei si dupa
nume.
SELECT f.nume_facultate, sp.nume_spec, s.an, s.grupa, s.nume FROM studenti AS
s, specializari AS sp, facultati AS f WHERE s.id_spec=sp.id_spec AND
sp.id_facultate=f.id_facultate AND s.valoaretaxa IS NULL ORDER BY
f.nume_facultate, sp.nume_spec, s.an, s.grupa, s.nume;
15. Afişaţi studenţii din anul 1 ai facultaţii de Ştiinţe Economice, ordonaţi pe grupe
alfabetic.
SELECT s.*,sp.nume_spec,f.nume_facultate FROM studenti as s, specializari as sp,
facultati as f WHERE s.id_spec=sp.id_spec AND sp.id_facultate=f.id_facultate AND
an=1 AND nume_facultate="Stiinte economice" AND valoare;
16. Afişaţi studenţii fǎrǎ taxǎ din anul 1 ai facultaţii de Ştiinţe Economice, ordonaţi pe
grupe alfabetic.
SELECT s.*,sp.nume_spec,f.nume_facultate FROM studenti as s, specializari as sp,
facultati as f WHERE s.id_spec=sp.id_spec AND sp.id_facultate=f.id_facultate AND
an=1 AND nume_facultate="Stiinte economice" AND valoaretaxa is null ORDER BY
grupa,nume;
21. Afişaţi personalul facultǎţii de Matematica şi Informatica, casatoriţi, angajaţi dupa anul
2000.
SELECT p.*,f.nume_facultate FROM personal as p,facultati AS f WHERE
p.id_facultate=f.id_facultate AND nume_facultate="Matematica" AND casatorit AND
YEAR(data_angajare)>2000;
23. Afişaţi denumirea facultǎţii, numele, funcţia, salariul mǎrit cu 20% şi gradul noului
salariu pentru toţi angajaţii.
SELECT DISTINCT nume_facultate,nume,functie,salariu*1.2 AS sal_marit,grad
FROM personal as p,facultati AS f,baremsalariu AS b WHERE
p.id_facultate=f.id_facultate AND salariu*1.2 BETWEEN sal_min AND sal_max;
24. Afişaţi numele, funcţia, salariul şi suma necesarǎ fiecarui angajat pentru a trece la
gradul urmǎtor de salariu.
SELECT nume,functie,salariu,sal_max-salariu+1 AS suma FROM
personal,baremsalariu WHERE salariu BETWEEN sal_min AND sal_max;