SQLShack (Română)

În acest articol, vom învăța SQL conceptul de îmbinări multiple și întărește învățăturile noastre cu exemple destul de simple, care sunt explicate cu ilustrații. În bazele de date relaționale, datele sunt stocate în tabele. Fără îndoială, și de cele mai multe ori, avem nevoie de un set de rezultate care să fie format combinând date din mai multe tabele. Îmbinările ne permit să combinăm date din două sau mai multe tabele, astfel încât să putem uni datele din tabele, astfel încât să putem extrage cu ușurință date din mai multe tabele. S-ar putea să vă întrebați câte tipuri diferite de unire există în SQL Server. Răspunsul este că există patru tipuri principale de asocieri care există în SQL Server. În primul rând, le vom descrie pe scurt utilizând ilustrațiile diagramelor Venn:

  • Inner join returnează rândurile care se potrivesc în ambele tabele

  • Unirea la stânga returnează toate rândurile din tabelul din stânga

  • Unirea dreaptă returnează toate rândurile din tabelul din dreapta

  • Unirea completă returnează rânduri întregi din ambele tabele

Dacă nu aveți cunoștințe despre conceptul de asociere SQL din SQL Server, puteți vedea prezentarea generală a tipurilor de asociere SQL și articolul tutorial.

După această scurtă explicație despre tipurile de asociere SQL, vom parcurge asocierile multiple.

Ce sunt îmbinările multiple SQL?

Îmbinările multiple pot fi descrise după cum urmează; multiple join este o interogare care conține aceleași sau diferite tipuri de join, care sunt utilizate de mai multe ori. Astfel, dobândim capacitatea de a combina mai multe tabele de date pentru a depăși problemele relaționale cu baza de date.

Exemplu de scenariu

Compania Green-Tree a lansat o nouă campanie pentru Anul Nou și a făcut oferte diferite clienților săi online. Ca urmare a campaniei lor, au reușit să convertească unele oferte în vânzări. În exemplele următoare, vom descoperi detaliile datelor despre campania de anul nou ale companiei Green-Tree.

Compania stochează aceste detalii despre datele campaniei în tabelele următoare. Acum, vom crea aceste tabele prin următoarea interogare și le vom completa cu câteva date false:

Cum funcționează îmbinările multiple SQL?

Problemă de afaceri: Ce clienți au fost interesați de acest An Nou campanie?

Pentru a răspunde la această întrebare, trebuie să aflăm rândurile potrivite pentru toate tabelele, deoarece unii clienți nu au primit o ofertă prin e-mail, iar unele oferte nu au putut fi convertite într-o vânzare. Următoarea diagramă Venn ne va ajuta să ne dăm seama de rândurile potrivite de care avem nevoie. Pe scurt, rezultatul acestei interogări ar trebui să fie rândurile care se intersectează cu toate tabelele din interogare. Zona de culoare gri specifică aceste rânduri în diagrama Venn:

Abordarea îmbinărilor multiple SQL ne va ajuta să ne alăturăm clienților online , comenzi și tabele de vânzări. După cum se arată în diagrama Venn, trebuie să potrivim rânduri ale tuturor tabelelor. Din acest motiv, vom combina toate tabelele cu o clauză de îmbinare interioară. Următoarea interogare va returna un set de rezultate dorit de la noi și va răspunde la întrebarea:

1
2
3
4
5
6
7
8

SELEGEȚI Numele clientului, customercity, customermail, salestotal
FROM onlinecustomers AS oc
INNER JOIN
comenzi AS o
ON oc.customerid = o.customerid
INNER JOIN
sales AS s
ON o.orderId = s.orderId

La început, vom analiza interogarea. O clauză de îmbinare interioară care se află între clienții on-line și tabelele de comenzi a derivat rândurile potrivite între aceste două tabele. A doua clauză de îmbinare interioară care combină tabelul de vânzări a derivat rândurile potrivite din setul de rezultate anterior. Următoarea ilustrație a tabelelor colorate ne va ajuta să înțelegem potrivirea datelor tabelelor unite în interogare. Rândurile de culoare galbenă specifică datele potrivite între clienți online și comenzi. Pe de altă parte, există doar rândurile de culoare albastră în tabelele de vânzări, astfel încât rezultatul interogării va fi rânduri de culoare albastră:

Rezultatul interogării va arăta astfel:

Utilizarea diferitelor tipuri de îmbinare în îmbinări multiple SQL

Problemă de afaceri: care oferte nu au putut fi convertite într-o vânzare?

Putem folosi diferitele tipuri de asocieri într-o singură interogare, astfel încât să putem depăși diferite probleme de baze de date relaționale.În acest exemplu, avem nevoie de toate rândurile din tabelul de comenzi, care sunt potrivite cu tabelele de clienți on-line. Pe de altă parte, aceste rânduri nu există în tabelul de vânzări. Următoarea diagramă Venn ne va ajuta să ne dăm seama de rândurile potrivite de care avem nevoie. Zona de culoare gri indică rândurile care vor fi rezultatul interogării:

În primul pas, ar trebui să combinăm tabelele de comenzi și comenzi on-line prin clauza de asociere interioară, deoarece asocierea interioară returnează toate rândurile potrivite între tabelele de comenzi și comenzi on-line. În al doilea pas, vom combina tabelul comenzilor cu tabelul de vânzări prin îmbinarea din stânga și apoi vom filtra valorile nule, deoarece trebuie să eliminăm rândurile stocate de tabelul de vânzări:

1
2
3
4
5
6
7
8
9

SELECȚIONEAZĂ Nume client, customercity, customermail, ordertotal, salestotal
FROM onlinecustomers AS c
INNER JOIN
comenzi AS o
ON c.customerid = o.customerid
LEFT JOIN
sales AS s
ON o.orderId = s.orderId
WHERE s.salesId IS NULL

Rezultatul interogării va fi arata astfel:

Test

Q întrebare: Vă rugăm să generați interogarea corespunzătoare în conformitate cu diagrama Venn de mai jos.

Răspuns: După cum am aflat, unirea completă permite să returnăm toate rândurile din tabelele combinate. Interogarea răspunsă va fi după cum urmează:

1
2
3
4
5
6
7
8

SELECȚIONEAZĂ Numele clientului, customercity, customermail, ordertotal, salestotal
FROM onlinecustomers AS c
FULL JOIN
comenzi AS o
ON c.customerid = o.customerid
FULL JOIN
sales AS s
ON o.orderId = s.orderId

Concluzie

În acest articol, ne-am concentrat pe abordarea îmbinărilor multiple SQL și am învățat-o cu exemple detaliate. Îmbinările multiple ne permit să combinăm mai mult de două tabele, astfel încât să putem depăși diferite probleme în sistemul de baze de date relaționale. Mai mult, am văzut cum am putea folosi diferite tipuri de unire într-o singură interogare.

  • Autor
  • Postări recente
Esat Erkec este un Profesionist în SQL Server, care și-a început cariera în urmă cu peste 8 ani ca dezvoltator de software. El este un expert SQL Server Microsoft Certified Solutions.
Cea mai mare parte a carierei sale sa concentrat pe administrarea și dezvoltarea bazei de date SQL Server. Interesele sale actuale sunt în administrarea bazelor de date și Business Intelligence. Îl poți găsi pe LinkedIn.
Vezi toate mesajele lui Esat Erkec

Ultimele mesaje ale lui Esat Erkec (vezi toate)
  • Noțiuni introductive despre programarea SQL – 3 februarie 2021
  • Cum se citește o execuție plan cu toate detaliile – 28 ianuarie 2021
  • Prezentare generală și exemple de instrucțiuni SQL SELECT TOP – 25 ianuarie 2021

Leave a Reply

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *