SQL INNER JOIN (Română)

Rezumat: în acest tutorial, veți afla cum să interogați date din mai multe tabele utilizând instrucțiunea SQL INNER JOIN.

În tutorialul anterior, ați învățat cum să interogați date dintr-un singur tabel folosind instrucțiunea SELECT. Cu toate acestea, de multe ori doriți să interogați date din mai multe tabele pentru a avea un set complet de rezultate pentru analiză. Pentru a interoga date din mai multe tabele, utilizați instrucțiuni de asociere.

SQL furnizează mai multe tipuri de asocieri, cum ar fi asociere interioară, asocieri externe (asociere exterioară stângă sau asociere stângă, asociere dreaptă exterioară sau asociere dreaptă și asociere exterioară completă ) și unirea de sine. În acest tutorial, vă vom arăta cum să utilizați clauza INNER JOIN.

Sintaxa SQL INNER JOIN

Următoarele ilustrează INNER JOIN sintaxă pentru unirea a două tabele:

1
2
3
4
5

SELECT
coloana1, coloana2
FROM
table_1
INNER JOIN table_2 ON join_condition;

Să examinăm sintaxa de mai sus în detaliu:

  • table_1 și table_2 se numesc tabele unite.
  • Pentru fiecare rând în table_1, interogarea găsește rândul corespunzător din table_2 care îndeplinește condiția de asociere. Dacă s-a găsit rândul corespunzător, interogarea returnează un rând care conține date din ambele tabele. În caz contrar, examinează rândul următor din table_1 și acest proces continuă până când sunt examinate toate rândurile din table_1.

Pentru unirea a mai mult de două tabele, s-a aplicat aceeași logică.

Exemple SQL INNER JOIN

SQL INNER JOIN – interogarea datelor din două tabele exemplu

În acest exemplu, vom folosi tabelele products și categories în baza de date eșantion. Următoarea imagine ilustrează diagrama bazei de date.

În diagrama de mai sus:

  • O categorie poate avea mai multe produse.
  • Un produs aparține unei singure categorii.

Prin urmare, există o relație multi-la-unu între rândurile din categories tabel și rânduri în tabelul products. Legătura dintre cele două tabele este coloana categoryid.

Trebuie să interogăm următoarele date din ambele tabele:

  • productID, productName din tabelul products.
  • categoryName din tabelul categories.

Următoarea interogare preia date din ambele tabele:

1
2
3
4
5
6

SELECT
productID, productName, categoryName
FROM
produse
INNER JOIN
categories ON categories.categoryID = products.categoryID;

Condiția de asociere este specificată în clauza INNER JOIN după cuvântul cheie ON ca expresie:

1

categories.categoryID = products.categoryID

Pentru fiecare rând din products tabel, interogarea găsește un rând corespunzător în tabelul categories care are același categoryid. Dacă există o potrivire între două rânduri în ambele tabele, returnează un rând care conține coloane specificate în clauza SELECT, adică, ID produs, numele produsului și numele categoriei; în caz contrar, verifică următorul rând din tabelul products pentru a găsi rândul care se potrivește în tabelul categories. Acest proces continuă până când se examinează ultimul rând al tabelului de produse.

SQL INNER JOIN – interogarea datelor din trei tabele

Putem folosi aceleași tehnici pentru alăturarea a trei tabele.Următoarea interogare selectează productID, productName, categoryName și supplier din products, categories și suppliers tabele:

1
2
3
4
5
6
7
8
9
10
11

SELECT
productID,
productName,
categoryName,
companyName AS furnizor
FROM
produse
INNER JOIN
categorii ON categorii. categoryID = products.categoryID
INNER JOIN
furnizori PE furnizori.supplierID = products.supplierID

SQL INNER JOIN implicit

Există o altă formă a INNER JOIN numită îmbinare interioară implicită după cum se arată mai jos:

1
2
3
4
5
6
7

SELECT
coloana1, coloana2
FROM
table_1,
table_2
WHERE
join_condition;

În acest formular, specificați toate tabelele unite în clauza FROM și puneți condiția de asociere în clauza WHERE a declarației SELECT. Putem rescrie exemplul de interogare de mai sus folosind INNER JOIN implicit după cum urmează:

1
2
3
4
5
6
7

SELECT
productID, productName, categoryName
FROM
produse,
categorii
UNDE
products.categoryID = categories.categoryID;

Vizualizați INNER JOIN folosind diagrama Venn

Write a Comment

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