Echivalente - stadopedia

Cel mai adesea, trebuie să faceți o conexiune pe coloanele comune a două tabele - cheile primare și cele străine. În acest caz, clauza WHERE specifică condiția ca coloana să fie egală cu o tabelă și cu coloana corespunzătoare dintr-un alt tabel. În acest caz, rândurile unei mese sunt conectate la rândurile celeilalte în funcție de valorile comune din coloanele corespunzătoare.







Exemplu: Pentru fiecare angajat să deducă numele său și numele departamentului în care lucrează.

Numele angajaților sunt în tabelul s_emp, în timp ce numele departamentelor sunt în tabelul s_dept. Tabelul s_emp are o coloană dept_id care conține numărul departamentului angajat și este o cheie străină în raport cu tabela s_dept. Tabelul s_dept are, de asemenea, o coloană care conține numărul departamentului - id, este cheia primară a tabelului s_dept. Avem nevoie de fiecare angajat din tabelul s_emp pentru a găsi numărul departamentului său, apoi găsiți același număr al departamentului în tabela s_dept și pe el pentru a determina numele departamentului.

SELECT s_emp.last_name, s_dept.name

Din s_dept, s_emp

25 rânduri selectate.

Rețineți că în exemplul de mai sus, numele coloanelor sunt precedate de numele tabelului din care ar trebui selectate aceste coloane. Problema este că în tabele diferite pot exista coloane cu nume identice. De exemplu, în exemplul nostru și în tabela s_emp și în tabela s_dept există o coloană numită id. Pentru a informa serverul despre care coloane să selectați, este necesar să setați prefixul ca nume de tabel înainte de fiecare nume de coloană, care poate fi interpretat ambiguu. Numele tabelului și numele coloanei sunt separate printr-o perioadă. Dacă prefixul nu este specificat, va apărea o eroare.

Exemplu: Pentru fiecare angajat să deducă numele său și numele departamentului în care lucrează.







SELECT ultim_name, nume

Din s_dept, s_emp

EROARE la linia 3:

ORA-00918: coloană definită ambiguu

Dacă nu aveți aceleași coloane în interogare, nu este necesar să specificați deloc numele tabelului. Dar se recomandă atunci când proba din mai multe tabele, în orice caz, să indice numele tabelelor, deoarece aceasta crește serverul de performanță de procesare de interogare și îmbunătățește lizibilitatea interogare.

Dacă, pe lângă condiția de conectare, specificați condițiile care restricționează selectarea rândurilor, aceste condiții sunt scrise cu ajutorul operatorului AND.

Exemplu: găsiți numele departamentului și numele regiunii în care se află acest departament pentru departamentul # 35.

SELECT s_dept.name, s_region.name

Din s_dept, s_region

Anticiparea fiecare nume de coloană în numele tabelului corespunzător poate fi consumatoare de timp, mai ales în cazul în care interogarea conține un număr mare de nume de coloane, și numele de tabele sunt lungi. Prin urmare, în loc de nume, puteți utiliza alias-uri de masă mai scurte. Aliasul tabelului este specificat după numele tabelului din clauza FROM și atribuie un nume diferit tabelului într-o singură interogare specifică. Utilizarea aliaselor de tabelă poate reduce cantitatea de cod SQL, ceea ce reduce consumul de memorie.

Alias-urile de masă pot conține până la treizeci de caractere, dar cu cât sunt mai scurte, cu atât mai bine. Dacă ați specificat un alias de tabelă în clauza FROM, acesta ar trebui să fie utilizat în locul numelui tabelului în întregul text al interogării.

Exemplu: Pentru fiecare companie client, alegeți numărul, numele, prenumele reprezentantului său de vânzări și numele regiunii în care este situat.

SELECTați c.id, c.name, e.last_name, r.name

Din s_customer c, s_emp e, s_region r

WHERE c.sales_rep_id = e.id și c.region_id = r.id;

ID-ul NAME NAME LAST_NAME NAME

201 Unisports Giljum America de Sud

202 JO Atheletics Nguyen Asia

203 Delhi Sport Nguyen Asia

204 Womansport Magee America de Nord

205 Kam's Sporting Goods Dumas Asia

206 Sportique Dumas Europa

208 Muench Sport Dumas Europa

209 Beisbol Si! Magee America de Nord

210 Futbol Sonora Giljum America de Sud

14 rânduri selectate.

Rețineți că în exemplul precedent sunt conectate trei tabele, astfel încât sunt indicate două condiții de conectare. (Tabelul Condiții s_customer și compusul s_emp și compusul s_region condiție și s_customer). In orice caz, cantitatea de compus compus n tabelele condiție ar trebui să fie de cel puțin n-1, altfel vei primi un produs tabele carteziene.







Articole similare

Trimiteți-le prietenilor: