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
-
- Mesaje:82
AUTO JOIN si Subinterogari corelate in MySQL
MarPlo
Mesaje:4343
Salut
Din definitie, cred ca o interogare corelata cu o subinterogare ar fi asa:
- 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:
- Daca coloana "id" e PRIMARY KEY in abele tabele, se poate scrie cu AUTO JOIN asa:
Sau asa:
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)
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
Cod: Selectaţi tot
SELECT * FROM tabel1
AUTO JOIN tabel2
Cod: Selectaţi tot
SELECT * FROM tabel1
AUTO JOIN tabel2 USING (id)
patricia
Mesaje:82
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:
b) Determinati toate comenzile de cielo:
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)
Cod: Selectaţi tot
SELECT * FROM comenzi, c
WHERE "CIELO" = (SELECT denumire_articol FROM articole, a
WHERE c.id_articol=a.id_articol)