|
Baze de date I - Laborator - Instructiunea SELECT
SELECT nume & ' ' & prenume AS furnizor_verdeturi
FROM persoane
WHERE idpersoana NOT In (SELECT FURNIZARI.Furnizor
FROM (TIPURI_PRODUSE INNER JOIN PRODUSE ON TIPURI_PRODUSE.IDTipProdus = PRODUSE.Tip) INNER JOIN FURNIZARI ON PRODUSE.IDProdus = FURNIZARI.Produs
WHERE (((TIPURI_PRODUSE.DenumireTip) In ('verdeturi','legume-fructe','racoritoare')));
SELECT nume & ' ' & prenume AS furnizor_verdeturi
FROM persoane
WHERE idpersoana In (SELECT FURNIZARI.Furnizor
FROM (TIPURI_PRODUSE INNER JOIN PRODUSE ON TIPURI_PRODUSE.IDTipProdus = PRODUSE.Tip) INNER JOIN FURNIZARI ON PRODUSE.IDProdus = FURNIZARI.Produs
WHERE (((TIPURI_PRODUSE.DenumireTip) In ('verdeturi','legume-fructe')));
produsele si pretul lor minim: subQ3
SELECT PRODUSE.IdProdus, Min(FURNIZARI.Pret) AS MinOfPret
FROM PRODUSE INNER JOIN (PERSOANE INNER JOIN FURNIZARI ON PERSOANE.IDPersoana = FURNIZARI.Furnizor) ON PRODUSE.IDProdus = FURNIZARI.Produs
GROUP BY PRODUSE.IdProdus;
SELECT PERSOANE.Nume, PERSOANE.Prenume, PRODUSE.Denumire, subQ3.MinOfPret
FROM (PRODUSE INNER JOIN
(PERSOANE INNER JOIN FURNIZARI ON PERSOANE.IDPersoana = FURNIZARI.Furnizor) ON PRODUSE.IDProdus = FURNIZARI.Produs)
INNER JOIN subQ3 ON PRODUSE.IDProdus = subQ3.IdProdus;
SELECT nume, prenume
FROM persoane
WHERE idpersoana in
(select furnizor from furnizari F where pret < (select avg(pret) from furnizari FF where FF.produs = F.produs));
SELECT DISTINCT PERSOANE.Nume, PERSOANE.Prenume, UNITATI_MASURA.DenScurta
FROM UNITATI_MASURA INNER JOIN (PRODUSE INNER JOIN (PERSOANE INNER JOIN FURNIZARI ON PERSOANE.IDPersoana=FURNIZARI.Furnizor) ON PRODUSE.IDProdus=FURNIZARI.Produs) ON UNITATI_MASURA.IDUM=PRODUSE.UM
WHERE (((UNITATI_MASURA.DenScurta)='bax'));
sau: selectam mult pers care se gasesc in multimea de furnizori de prod la bax
SELECT PERSOANE.Nume, PERSOANE.Prenume FROM PERSOANE WHERE IdPersoana IN
(SELECT Furnizor FROM UNITATI_MASURA INNER JOIN (PRODUSE INNER JOIN FURNIZARI ON PRODUSE.IDProdus=FURNIZARI.Produs) ON UNITATI_MASURA.IDUM=PRODUSE.UM
WHERE UNITATI_MASURA.DenScurta='bax');
SELECT COUNT(*) FROM PERSOANE WHERE IdPersoana IN
(SELECT Furnizor FROM UNITATI_MASURA INNER JOIN (PRODUSE INNER JOIN FURNIZARI ON PRODUSE.IDProdus=FURNIZARI.Produs) ON UNITATI_MASURA.IDUM=PRODUSE.UM
WHERE (((UNITATI_MASURA.DenScurta)='bax'));
SELECT Count(*) AS NrFurnizori
FROM PERSOANE
WHERE (((PERSOANE.IDPersoana) In (select furnizor from ((produse inner join furnizari on FURNIZARI.produs=PRODUSE.idprodus)
inner join tipuri_produse on PRODUSE.tip=TIPURI_PRODUSE.idtipprodus) where denumiretip='racoritoare') Or (PERSOANE.IDPersoana) In (SELECT Furnizor FROM UNITATI_MASURA INNER JOIN (PRODUSE INNER JOIN FURNIZARI ON PRODUSE.IDProdus=FURNIZARI.Produs) ON UNITATI_MASURA.IDUM=PRODUSE.UM
WHERE ((UNITATI_MASURA.DenScurta)='bax')
GROUP BY furnizor
HAVING count(*)>=3)));
TEMA
Adaugati
tabela Facturi cu campurile IdFactura, Serie, Numar, Data, Client.
(Indicatie. Client este cheie straina pe tabela PERSOANE - functie in DEA).
Adaugati tabela LiniiFacturi cu campurile
IdLinieFactura, Factura, NrLinie, Produs, Cantitate, PretUnitar.
(Indicatie. Factura este cheie straina pe tabela FACTURI, Produs este cheie
straina pe tabela PRODUSE - functii in DEA).