Você está na página 1de 6

EXEMPLE DE INTEROGARI IN SQL

Se dau tabelele cu structura din imaginea de mai jos.

COMPUNERE CU WHERE
a) 2 tabele.
Sa se afiseze informatii privind facturile emise inclusiv valoarea facturata pentru fiecare
CODISBN.
SELECT Facturi.nrfact, Facturi.datafact, Facturi.codfiscal, [Continut Factura].codisbn,
[Continut factura].cantitate,[Continut Factura].pretf,
[Continut Factura].cantitate*[Continut Factura].pretf AS Valoare
FROM Facturi, [Continut Factura]
WHERE Facturi.nrfact=[Continut Factura].nrfact;
b) 3 tabele
Sa se afiseze informatii privind facturile emise inclusiv valoarea facturata pe fiecare
CODISBN si pentru fiecare client.
SELECT Facturi.nrfact, Facturi.datafact, Facturi.codfiscal, [Continut factura].codisbn,
[Continut factura].cantitate, [Continut factura].pretf,
[Continut factura].cantitate *[Continut factura].pretf AS Valoare,
Clienti.codfiscal, Clienti.denumirecl
FROM Facturi, [Continut factura], Clienti
WHERE Facturi.nrfact=[Continut factura].nrfact And Clienti.codfiscal=Facturi.codfiscal;
COMPUNERE CU JOIN
2 tabele cu INNER JOIN
SELECT facturi.nrfact, facturi.datafact, facturi.codfiscal, [continut factura].codisbn,
[continut factura].cantitate, [continut factura].pretf,
[continut factura].cantitate*[continut factura].pretf AS Valoare
FROM facturi INNER JOIN [continut factura] ON facturi.nrfact=[continut factura].nrfact;

a) 2 tabele cu LEFT JOIN


SELECT facturi.nrfact, facturi.datafact, facturi.codfiscal, [continut factura].codisbn, [continut
factura].cantitate, [continut factura].pretf, [continut factura].cantitate*[continut factura].pretf
AS Valoare
FROM facturi LEFT JOIN [continut factura] ON facturi.nrfact=[continut factura].nrfact;

b) 2 tabele cu RIGHT JOIN


SELECT facturi.nrfact, facturi.datafact, facturi.codfiscal, [continut factura].codisbn, [continut
factura].cantitate, [continut factura].pretf, [continut factura].cantitate*[continut factura].pretf
AS Valoare
FROM facturi RIGHT JOIN [continut factura] ON facturi.nrfact=[continut factura].nrfact;

Functii agregat
a) SELECT DISTINCT Max(a5) AS [a5_Maxim], Min(a5) AS [a5_Minim], Avg(a5) AS
[a5_Medie] FROM A;
b) SELECT COUNT(*) AS [Numr de tupluri] FROM A;
Afiarea valorii pe fiecare carte facturat n luna martie 2014
SELECT Facturi.[Numar Factura],
[Continut Factura].[Cod ISBN],
Month([Data Facturii]) AS Luna,
Year([Data Facturii]) AS Anul,

[Cantitate]*[Pret f] AS Valoare
FROM Facturi INNER JOIN [Continut Factura] ON Facturi.[Numar Factura] = [Continut
Factura].[Numar Factura]
WHERE Month([Data Facturii])=3 AND Year([Data Facturii])=2014;
Adaugarea de inregistrari in tabelul CLIENTI-NOI din tabelul CLIENTI
INSERT INTO [CLIENTI-NOI] ( [COD-CL], [DEN-CL] )
SELECT CLIENTI.[COD-CL], CLIENTI.[DEN-CL]
FROM CLIENTI WHERE [COD-CL]=1 OR [COD-CL]=5;
Adaugarea de inregistrari in tabelul FACTURI-NOI din tabelul FACTURI
INSERT INTO FACTURI ( [NR-FACTURA], [COD-CL], [COD-MARFA], CANTITATE, PRET, DATA
)
SELECT [FACTURI-NOI].[NR-FACTURA], [FACTURI-NOI].[COD-CL], [FACTURI-NOI].[CODMARFA], [FACTURI-NOI].CANTITATE, [FACTURI-NOI].PRET,
[FACTURI-NOI].DATA FROM [FACTURI-NOI]
WHERE ([facturi-noi].[COD-MARFA]=2) AND ([FACTURI-NOI].DATA>#3/3/2012#);
Afiarea totalului cantitilor facturate pe fiecare marf i pentru fiecare client ( cu Transform).
TRANSFORM Sum([CLIENTI-MARFURI-FACTURI].CANTITATE) AS SumaCANTITATE
SELECT [CLIENTI-MARFURI-FACTURI].[DEN-MARFA]
FROM [CLIENTI-MARFURI-FACTURI]
GROUP BY [CLIENTI-MARFURI-FACTURI].[DEN-MARFA]
PIVOT [CLIENTI-MARFURI-FACTURI].[DEN-CL];
S se tearg din tabelul Facturi nregistrarile care au nr-factura=2.
DELETE *
FROM FACTURI
WHERE ((FACTURI.[NR-FACTURA])=2);
Sinteza pe client- afiarea totalului valoric pentru mrfurile facturate pe fiecare client
SELECT [CLIENTI-MARFURI-FACTURI].[COD-CL], [CLIENTI-MARFURI-FACTURI].[DEN-CL],
Sum([CLIENTI-MARFURI-FACTURI].VALOARE) AS SumOfVALOARE
FROM [CLIENTI-MARFURI-FACTURI]
GROUP BY [CLIENTI-MARFURI-FACTURI].[COD-CL], [CLIENTI-MARFURI-FACTURI].[DEN-CL];
Majorarea cu 20% a pretului n facturile clientilor avnd codul>20.
UPDATE [facturi-noi]
SET PRET = pret*1.2 WHERE ([cod-cl]>20);
Afiarea informaiilor despre un client pentru care localitatea se va introduce ca parametru de
la tastatura calculatorului.
SELECT CLIENTI.[COD-CL], CLIENTI.[DEN-CL], CLIENTI.LOCALITATE
FROM CLIENTI
WHERE ((CLIENTI.LOCALITATE)=[INTRODUCETI LOCALITATE=]);

Reuniunea tabelului CLIENTI cu Tabelul CLIENTI ARAD


SELECT [CodFiscal],[DenumireCL],Localitate,Telefon
FROM Clienti
UNION SELECT [CodFiscal],[DenumireCl],Localitate,Telefon
FROM [Clienti Arad]
ORDER BY Localitate, [DenumireCl];
Din ce localitate sunt clienii ce au n factur codfiscal=555.
SELECT CLIENTI.[CODFISCAL], CLIENTI.LOCALITATE
FROM CLIENTI
WHERE CLIENTI.[CODFISCAL] IN
(SELECT FACTURI.[CODFISCAL]
FROM FACTURI
WHERE FACTURI.[CODFISCAL]="555");
Din ce localiti sunt clienii ce nu au n factur codfiscal=555.
SELECT CLIENTI.[CODFISCAL], CLIENTI.LOCALITATE
FROM CLIENTI
WHERE CLIENTI.[CODFISCAL] NOT IN
(SELECT FACTURI.[CODFISCAL]
FROM FACTURI
WHERE FACTURI.[CODFISCAL]="555");
Se d structura tabelelor:
FURNIZORI(CODFZ, DENFZ, LOCALITATE)
CONTRACTE(NUMAR CONTRACT, DATA, VALOARE CONTRACT, CODFZ)
Se cere s scriei frazele SQL pentru urmtoarele cerine:
1. Afiarea codului furnizorilor i numrului de contract pentru furnizorii care au data
contractului 17 aprilie 2012
SELECT DISTINCT [Nrcontract], codfz, DATA
FROM CONTRACTE
WHERE CODFZ IN
(SELECT CODFZ FROM CONTRACTE WHERE([DATA]= #4/17/2012#));
2. Furnizorii din Bucuresti care au contract in anul curent si au valoare contract >10000
SELECT FURNIZORI.codfz, FURNIZORI.denfz, FURNIZORI.localitate,
CONTRACTE.NRCONTRACT, CONTRACTE.DATA, CONTRACTE.VALOARE
FROM FURNIZORI RIGHT JOIN CONTRACTE ON FURNIZORI.codfz=CONTRACTE.CODFZ
WHERE (((FURNIZORI.localitate)="bucuresti") And (year(CONTRACTE.DATA)=year(now()))
And ((CONTRACTE.VALOARE)>10000));
3.

Numrul contractelor ncheiate in fiecare zi i totalul valorii contractate in ziua


respectiva

SELECT Count(CONTRACTE.NRCONTRACT) AS nrcontracte,

CONTRACTE.DATA, Sum(CONTRACTE.VALOARE) AS TOTAL


FROM CONTRACTE
GROUP BY CONTRACTE.DATA;

4. Lista furnizorilor din Iasi, Cluj si Deva care au data contractului n intervalul (1.01.201231.12.2014)
SELECT FURNIZORI.codfz, FURNIZORI.denfz, FURNIZORI.localitate,
CONTRACTE.NRCONTRACT, CONTRACTE.DATA, CONTRACTE.VALOARE
FROM FURNIZORI RIGHT JOIN CONTRACTE ON FURNIZORI.codfz = CONTRACTE.CODFZ
WHERE (((FURNIZORI.localitate)="Iasi" Or (FURNIZORI.localitate)="Cluj" Or
(FURNIZORI.localitate)="Deva") AND ((CONTRACTE.DATA) Between (#1/1/2012#) And
(#12/31/2014#)));
5.

Informatii despre toate contractele, n afar de contractul 111.

SELECT [Nrcontract], codfz, DATA


FROM CONTRACTE
WHERE CODFZ NOT IN
(SELECT CODFZ FROM CONTRACTE WHERE (NRCONTRACT=111));
6. Informatii referitoare numai despre contractul 111.
SELECT [Nrcontract], codfz, DATA
FROM CONTRACTE
WHERE CODFZ IN
(SELECT CODFZ FROM CONTRACTE WHERE (NRCONTRACT=111));
7. Numrul contractelor ncheiate cu furnizorii in fiecare zi calendaristica .
SELECT Count(CONTRACTE.NRCONTRACT) AS nrcontracte, CONTRACTE.DATA
FROM CONTRACTE
GROUP BY CONTRACTE.DATA;
8. Valoarea total a contractelor pe fiecare data calendaristic.
SELECT CONTRACTE.DATA, Sum(CONTRACTE.VALOARE) AS TOTAL
FROM CONTRACTE
GROUP BY CONTRACTE.DATA;
9. Afiarea numelui furnizorilor care nu au contracte
SELECT FURNIZORI.codfz, FURNIZORI.denfz, FURNIZORI.localitate

FROM FURNIZORI LEFT JOIN CONTRACTE ON FURNIZORI.[codfz] =


CONTRACTE.[CODFZ]
WHERE (((CONTRACTE.CODFZ) Is Null));
Se d structura tabelului: PERSONAL(CNP,NUME,DATAN,SALARIU)
S se afieze:
1. Numele care ncep cu litera P.
SELECT nume
FROM personal
WHERE (Left(nume,1)="P");
2. Numele care au pe ultimele trei pozitii terminatia SRL
SELECT nume from personal
WHERE (Right(nume,3)="SRL");
3. Numele care au n coninut terminaia SRL
SELECT personal.nume
FROM personal
WHERE (nume Like "*SRL");

Você também pode gostar