Simple equi-join - stadopedia

Emiteți toate combinațiile de informații despre astfel de furnizori și detalii care se află în același oraș (cu alte cuvinte, "co-localizat" este un termen urât, dar convenabil):







În cazul în care S.Grood = R.GROD;

Rețineți că aici referințele la câmpurile din clauza WHERE trebuie specificate prin numele tabelelor care le conțin. Ca rezultat, obținem următorul tabel 1. (Pentru a evita ambiguitatea în acest tabel, două coloane ale CITY sunt afișate în mod explicit ca S.GOROD și R.GOROD.)

S1 S1 S1 S2 S2 S3 S3 S4 S4 S4

Smith Smith Jones Jones Blake Clark Clark Clark

Londra Londra Londra Paris Paris Paris Paris Londra Londra Londra

deoarece acestea satisfac predicatul în fraza WHERE (S.GOROD = R.GOROD). Acest lucru este valabil și pentru toate celelalte perechi de rânduri care conțin valorile CITY corespunzătoare. Rețineți că vânzătorul S5 situat în Aten nu intră în tabelul rezultat, deoarece nu există date stocate în acest oraș. În mod similar, rezultatul nu conține detalii despre RH păstrate la Roma, deoarece nu există furnizori localizați la Roma.

Rezultatul acestei interogări este numit asocierea tabelelor S și P prin corespondența dintre valorile CITY. Termenul "conexiune" este de asemenea utilizat pentru a desemna funcționarea construirii unui astfel de rezultat. Condiția S.CITY = ROW este numită condiție de conectare sau predicat de conexiune. În legătură cu exemplul de mai sus, trebuie remarcat un număr de puncte. Unele dintre ele sunt importante, altele nu sunt atât de importante.

- Ambele câmpuri din predicatul conexiunii trebuie să fie șiruri de caractere numerice sau de caractere. Nu este necesar ca tipurile de date să fie identice. Cu toate acestea, din motive de performanță, acest lucru nu ar fi, în general, rău.







- Nu este necesar ca câmpurile din predicatul conexiunii să aibă aceleași nume, deși foarte des se va întâmpla acest lucru.

- Nu este necesar ca operatorul de comparare din predicatul conexiunii să fie o egalitate, deși acest lucru va fi foarte comun. Mai multe exemple de acest fel vor fi date (exemplul 4.3.2 și ultima parte a exemplului 4.3.6). În cazul unui operator de egalitate, o conexiune este uneori numită equi-join.

- Clauza WHERE din conexiunea SELECT poate include, pe lângă predicatul conexiunii, și alte condiții. Această posibilitate este ilustrată mai jos în exemplul 4.3.3.

- Desigur, puteți oferi SELECT o selecție a câmpurilor de conectare specificate, nu toate acestea. Această posibilitate este ilustrată mai jos în exemplele 4.3.4-4.3.6.

pot fi simplificate în continuare:

Pe de altă parte, poate fi scrisă într-o formă extinsă:

SELECTAREA NUMĂRULUI DE FURNIZOR, NUMĂRUL ULTIM, STATE, S.gorod

NUMBER_DETAILS, NAME, COLOR, WEIGHT, R. CITY

În această formulă pentru S.GOROD și R.GOROD în fraza SELECT ar trebui să precizeze numele lor calificate, așa cum se arată în exemplu, deoarece numele nespecificat al CITY-ului ar fi ambiguu. Dacă trebuie să reîmprospătați memoria întrebărilor referitoare la numele câmpurilor rafinate, consultați introducerea la secțiunea 4.2.

- Prin definiție, un equi-join trebuie să producă un rezultat care conține două coloane identice. Dacă excludeți una dintre aceste coloane, restul se numește o conexiune naturală. Pentru a construi o conexiune firească a tabelelor S și P asupra orașelor din SQL, trebuie scrisă:

SELECTAREA FURNIZORULUI, NUMELE, STATE, STATE, S.CITY,

NUMBER_DETAILS, NAME, COLOR, WEIGHT

În cazul în care S.Grood = R.GROD;

Un compus natural este probabil una dintre formele cele mai utile ale unui compus - în măsura în care adesea folosim termenul "compus" nespecificat pentru a se referi în mod special la acest caz.

- Poți forma și conexiuni, trei, patru. sau orice număr de tabele. În exemplul 4.3.5, mai jos, este afișată conexiunea a trei tabele.







Articole similare

Trimiteți-le prietenilor: