Join SQL
Join SQL
INNER JOIN
SELECT DenCl,CodCl
FROM CLIENTI INNER JOIN CODURI_POSTALE
ON CLIENTI.CodPost= CODURI_POSTALE.CodPost INNER JOIN JUDETE ON
JUDETE.Jud=CODURI_POSTALE.Jud
WHERE Judet= 'Iasi'
Varianta 2:
NATURAL JOIN – Compara toate coloanele cu nume identice, poate fi realizata doar intre 2
tabele, este riscant de utilizat in cazul in care numele coloanelor se schimba
SELECT Loc
FROM CODURI_POSTALE NATURAL JOIN JUDETE
WHERE Regiune='Moldova'
Cu ajutorul unei interogari SQL, aflati numerele de mobil ale persoanelor de contact pentru
clientul 1002
SELECT TelMobil
FROM PERSOANE INNER JOIN PERSCLIENTI
ON PERSOANE.CNP = PERSCLIENTI.CNP
INNER JOIN CLIENTI ON CLIENTI.CodCl=PERSCLIENTI.CodCl
WHERE CLIENTI.CodCl=1002
Afisati valoarea celei mai mari transe incasate pentru facturile emise intre 1 iunie 2007 si 31
ianuarie 2008, fara a apela la subconsultari.
SELECT Transa
FROM FACTURI INNER JOIN INCASFACT ON FACTURI.NrFact= INCASFACT.NrFact
WHERE DataFact BETWEEN DATE'2007-06-01' AND DATE'2007-12-31'
ORDER BY Transa DESC LIMIT 1
Afisati codurile unice ale produselor pentru care au fost realizate incasari dupa data de 1 aprilie
2007
SELECT DISTINCT PRODUSE.CodPr
FROM PRODUSE INNER JOIN LINIIFACT ON PRODUSE.CodPr = LINIIFACT.CodPr
INNER JOIN FACTURI ON FACTURI.NrFact = LINIIFACT.NrFACT
INNER JOIN INCASFACT ON INCASFACT.NrFact = FACTURI.NrFact
INNER JOIN INCASARI ON INCASARI.CodInc = INCASFACT.CodInc
WHERE DataInc > DATE'2007-04-01'
SINONIME LOCALE
Afisati codurile unice ale produselor pentru care au fost realizate incasari dupa data de 1 aprilie
2007. Utilizati sinonime locale pentru tabelele implicate
Afisati datele unice de emitere a facturilor pentru clientul 1003, ordonate cronologic. Utilizati
sinonime locale pentru tabelele implicate
SELECT DISTINCT DataFact
FROM FACTURI F INNER JOIN CLIENTI C ON F.CodCl = C.CodCl
ORDER BY DataFact ASC
JONCTIUNEA UNEI TABELE CU EA INSASI (1)
Ce alte judete se gasesc in aceeasi regiune cu judetul Iasi?
SELECT J2.Judet
FROM JUDETE J1 INNER JOIN JUDETE J2 ON J1.Regiune = J2.Regiune
WHERE J1.Judet= 'Iasi' AND J2.Judet <> 'Iasi'
Care sunt persoanele de contact de la aceeasi firma cu persoana care are CNP-ul CNP1?
SELECT P2.CNP,P2.Nume,P2.Prenume
FROM PERSOANE P1 INNER JOIN PERSCLIENTI PC1 ON P1.CNP = PC1.CNP
INNER JOIN CLIENTI C1 ON PC1.CodCl = C1.CodCl
INNER JOIN CLIENTI C2 ON C1.CodCl = C2.CodCl
INNER JOIN PERSCLIENTI PC2 ON C2.CodCl = PC2. CodCl
INNER JOIN PERSOANE P2 ON PC2.CNP = P2.CNP
WHERE P1.CNP = 'CNP2' AND P2.CNP != 'CNP2'
FUNCTII DE AGREGARE
GRUPAREA TUPLURILOR
Obtineti situatie a facturilor (NrFact,DataFact) grupate dupa codul clientului. Ordonati lista
crescator dupa codul clientului si descescator dupa data facturii
Calculati numarul distinct de produse pentru fiecare factura si valoarea medie unitara a acestora.
Redenumiti coloanele calculate si ordonati descrescator dupa valoarea medie.
SELECT F.NrFact, COUNT(DISTINCT CodPr) AS "Numar Produse", AVG(PretUnit) AS
"Valoare medie"
FROM FACTURI F INNER JOIN LINIIFACT LF ON F.NrFact = LF.NrFact
GROUP BY F.NrFact
ORDER BY 3 DESC
Aflati datele distincte in care firma a intocmit facturi cu cel putin 2 produse distincte si cu o
valoare mai mare decat 1000000 clientului 1001. Ordonati cronologic
SELECT DataFact,COUNT(DISTINCT CodPr),SUM(Cantitate*PretUnit)
FROM FACTURI F INNER JOIN LINIIFACT LF ON F.NrFact = LF.NrFact
WHERE F.CodCl = 1001
GROUP BY DataFact
HAVING COUNT(DISTINCT CodPr)>2 AND SUM(Cantitate*PretUnit)>1000000
ORDER BY 1 ASC