Combină înregistrări din două tabele atunci când există valori corespondente într-un câmp comun.
Sintaxă
FROM tabel1 INNER JOIN tabel2 ON tabel1.câmp1oprcomp tabel2.câmp2
Operațiunea INNER JOIN (UNIRE INTERNĂ) are următoarele componente:
Parte |
Descriere |
tabel1, tabel2 |
Numele tabelelor din care se combină înregistrările. |
câmp1, câmp2 |
Numele câmpurilor care se unesc. Dacă nu sunt numerice, câmpurile trebuie să fie de același tip de date și să conțină același tip de date, dar nu trebuie neapărat să aibă același nume. |
oprcomp |
Orice operator de comparație relativă: "=," "<," ">," "<=," ">=," sau "<>." |
Observații
Puteți utiliza o operațiune INNER JOIN în orice clauză FROM. Acesta este cel mai comun tip de unire. Unirile interne combină înregistrări din două tabele ori de câte ori există valori corespondente într-un câmp comun ambelor tabele.
Puteți utiliza INNER JOIN cu tabelele Departamente și Angajați pentru a selecta toți angajații din fiecare departament. Pe de altă parte, pentru a selecta toate departamentele (chiar dacă unele nu au angajați atribuiți) sau toți angajații (chiar dacă unii nu sunt atribuiți unui departament), puteți utiliza o operațiune LEFT JOIN sau RIGHT JOIN pentru a crea o unire externă.
Dacă încercați să uniți câmpuri care conțin date Memo sau Obiect OLE, se produce o eroare.
Puteți uni orice două câmpuri numerice de tipuri similare. De exemplu, puteți uni câmpuri Numerotare automată și Lung, deoarece sunt tipuri similare. Cu toate acestea, nu puteți uni tipuri de câmpuri Simplu și Dublu.
Următorul exemplu arată cum puteți uni tabelele Categories (Categorii) și Products (Produse) după câmpul CategoryID (IDCategorie):
SELECT CategoryName, ProductName
FROM Categories INNER JOIN Products ON Categories.CategoryID = Products.CategoryID;
În exemplul precedent, CategoryID (IDCategorie) este câmpul de unire, dar acesta nu este inclus în rezultatul interogării, deoarece nu este inclus în instrucțiunea SELECT. Pentru a include câmpul de unire, includeți numele câmpului în instrucțiunea SELECT, în acest caz, Categories.CategoryID.
De asemenea, puteți lega mai multe clauze ON într-o instrucțiune JOIN, utilizând următoarea sintaxă:
SELECT câmpuri
FROM tabel1 INNER JOIN tabel2 ON tabel1.field1oprcomptabel2.câmp1 AND ON tabel1.câmp2oprcomptabel2.câmp2) OR ON tabel1.câmp3oprcomptabel2.câmp3)];De asemenea, puteți imbrica instrucțiuni JOIN utilizând următoarea sintaxă:
SELECT câmpuri
FROM tabel1 INNER JOIN (tabel2 INNER JOIN [( ]tabel3 [INNER JOIN [( ]tabelx [INNER JOIN ...)] ON tabel3.câmp3oprcomptabelx.câmpx)] ON tabel2.câmpd2oprcomptabel3.câmp3) ON tabel1.câmp1oprcomptabel2.câmp2;O operațiune LEFT JOIN sau RIGHT JOIN poate fi imbricată într-o operațiune INNER JOIN, dar o operațiune INNER JOIN nu poate fi imbricată într-o operațiune LEFT JOIN sau RIGHT JOIN.