TOP

Lecția SQL 10. Îmbinarea tabelelor (INNER JOIN)

Cea mai puternică caracteristică a limbajului SQL este capacitatea de a combina diferite tabele în memoria RAM a SGBD în timpul execuției interogărilor. Joinurile sunt foarte des folosite pentru analiza datelor. De regulă, datele sunt în tabele diferite, ceea ce le permite să fie stocate mai eficient (deoarece informațiile nu sunt duplicate), simplifică procesarea datelor și permite scalarea bazei de date (este posibil să adăugați noi tabele cu informații suplimentare) .

Tabelele de baze de date utilizate în DBMS MS Access sunt tabele relaționale, adică toate tabelele pot fi conectate între ele prin câmpuri comune.


1. Crearea unei combinații de tabele (JOINS)

Combinarea tabelelor este o procedură foarte simplă. Este necesar să specificați toate tabelele care vor fi incluse în combinație și să „explicați” SGBD modul în care acestea vor fi legate între ele. Conexiunea se face folosind cuvântul WHERE, de exemplu:

Run SQLSELECT DISTINCT Seller_name, Product 
FROM Sellers, Sumproduct 
WHERE Sellers.City = Sumproduct.City

Combinând cele două tabele, am putut vedea ce produse vinde fiecare vânzător. Să aruncăm o privire mai atentă la codul de solicitare, deoarece este ușor diferit de o solicitare normală. Instrucțiunea SELECT începe prin a specifica coloanele pe care dorim să le afișam, dar aceste câmpuri sunt în tabele diferite, clauza FROM conține două tabele pe care dorim să le unim în instrucțiunea SELECT, tabelele sunt unite folosind cuvântul WHERE, care specifică coloanele a se alatura. Trebuie să specificați numele complet al câmpului (Table.Field), deoarece câmpul City este în ambele tabele.

2. Combinație internă (INNER JOIN)

În exemplul anterior, am folosit cuvântul WHERE pentru a combina tabele, care efectuează o verificare bazată pe echivalența a două tabele. O combinație de acest tip este numită și „combinație interioară”. Există și un alt mod de a combina tabele care indică clar tipul de combinație. Luați în considerare următorul exemplu:

Run SQLSELECT DISTINCT Seller_name, Product 
FROM Sellers 
INNER JOIN Sumproduct 
ON Sellers.City = Sumproduct.City

În această interogare, în loc de WHERE, am folosit construcția INNER JOIN ... ON ..., care a dat un rezultat similar. Deși combinația cu clauza WHERE este mai scurtă, este totuși mai bine să utilizați INNER JOIN deoarece este mai flexibil, așa cum va fi explicat mai detaliat în secțiunile următoare.