Pagina 1 din 1

AUTO JOIN si Subinterogari corelate in MySQL

Scris: Vin Oct 05, 2012
de patricia
As fi foarte recunoscatoare daca poate sa imi dea cineva cateva exemple clare cu autouniri (auto join) si subinterogari corelate.
Definitie:
- O subinterogare e corelata cand valoarea produsa de ea depinde de o valoare produsa de o instructiune select exterioara care o contine.

AUTO JOIN si Subinterogari corelate in MySQL

Scris: Sâm Oct 06, 2012
de MarPlo
Salut
Din definitie, cred ca o interogare corelata cu o subinterogare ar fi asa:

Cod: Selectaţi tot

UPDATE `tabel_1` SET `col`='val' WHERE `tabel_1`.`id`=(SELECT `tabel_2`.`id` FROM `tabel_2` WHERE `tabel_2`.`col`='o_val' LIMIT 1)
- Select-ul fiind subinterogare in interogarea Update.

Iar AUTO JOIN (din ce am gasit pe net, fiindca personal nu am folosit) se face intre tabele care au coloana index cu acelasi nume, si astfel nu mai trebuie specificata acea coloana.
De exemplu, in acest Select:

Cod: Selectaţi tot

SELECT * FROM tabel1
JOIN tabel2 ON tabel1.id = tabel2.id
- Daca coloana "id" e PRIMARY KEY in abele tabele, se poate scrie cu AUTO JOIN asa:

Cod: Selectaţi tot

SELECT * FROM tabel1
AUTO JOIN tabel2
Sau asa:

Cod: Selectaţi tot

SELECT * FROM tabel1
AUTO JOIN tabel2 USING (id)

AUTO JOIN si Subinterogari corelate in MySQL

Scris: Dum Oct 07, 2012
de patricia
Am gasit cateva exemple, dar nu inteleg care e mecanismul, cum functioneaza exact , care sunt pasii exacti care se executa.
O sa enumar exemplele si daca intelege careva va rog sa explicati si pentru "nelamuritii" ca mine:

Se dau 3 tabele ce respecta structura:
articole (id_articol, denumire_articol, id_fabrica, pret_unitar);
fabrici (id_fabrica, nume_fabrica,oras, strada, numar);
comenzi (numar_comanda, data_comenzii, data_livrarii, id_client);

a) Determinati comenzile care contin mai mult de trei articole:

Cod: Selectaţi tot

SELECT numar_comanda FROM comenzi, c
WHERE 3<(SELECT COUNT(*) FROM articole, a
WHERE c.numar_comanda = a.numar_comanda)
b) Determinati toate comenzile de cielo:

Cod: Selectaţi tot

SELECT * FROM comenzi, c
WHERE "CIELO" = (SELECT denumire_articol FROM articole, a
WHERE c.id_articol=a.id_articol)