Sunteți pe pagina 1din 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].[COD-
MARFA], [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.2012-
31.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");

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