Ekvivalensek - stadopedia

Leggyakrabban két táblázatos közös oszlopot kell létrehoznia - az elsődleges és a külföldi kulcsokat. Ebben az esetben a WHERE klauzula határozza meg, hogy az oszlop egyenlő legyen egy táblázattal és egy másik táblázat megfelelő oszlopával. Ebben az esetben az egyik táblázat sorai a másik oszlop soraihoz kapcsolódnak a megfelelő oszlopok közös értékei szerint.

Példa: Minden alkalmazottnak le kell vonnia a nevét és annak az osztálynak a nevét, amelyben dolgozik.

A munkavállalók nevei a s_emp táblában szerepelnek, míg a szervezeti nevek a s_dept táblában szerepelnek. Az s_emp tábla tartalmaz egy dept_id oszlopot, amely tartalmazza a személyzeti osztály számát, és egy idegen kulcs az s_dept táblához képest. A s_dept tábla tartalmaz egy oszlopot is, amely tartalmazza az osztály számát - id, ez az s_dept tábla elsődleges kulcsa. Mi szükség van minden munkavállaló az asztalról s_emp megtalálja a kártya számát, majd megtalálja az ugyanazon az osztályon számot s_dept asztalon, rajta, hogy meghatározzák a szervezeti egység neve.

SELECT s_emp.last_name, s_dept.name

FROM s_dept, s_emp

25 sor van kiválasztva.

Ne feledje, hogy a fenti példában az oszlopneveket megelőzi azok a táblázatok, amelyekből ezeket az oszlopokat kell kiválasztani. Az az ügy az, hogy különböző táblázatokban oszlopok azonos azonosítóval rendelkeznek. Például a példánkban és a s_emp táblában, valamint az s_dept táblában létezik egy oszlop neve id. Annak eldöntéséhez, hogy a kiszolgáló mely oszlopokat választja ki, az előtagot mint oszlopnevet meg kell adnia táblázatos névként, amely kétértelműen értelmezhető. A tábla neve és oszlopának neve szétválaszt egy idővel. Ha az előtag nincs megadva, hiba lép fel.

Példa: Minden alkalmazottnak le kell vonnia a nevét és annak az osztálynak a nevét, amelyben dolgozik.

SELECT utónév, név

FROM s_dept, s_emp

ERROR a 3. sorban:

ORA-00918: oszlop kétértelműen definiálva

Ha nem rendelkezik ugyanazokkal az oszlopokkal a lekérdezésben, akkor nem kell megadnia a táblázatok nevét. De javasoljuk, hogy amikor több táblázatot választ ki, mindenképpen adja meg a táblák nevét, mivel ez növeli a lekérdezés feldolgozási teljesítményét a kiszolgálón, és javítja a lekérdezés olvashatóságát.

Ha a csatlakozási feltétel mellett olyan feltételeket is megad, amelyek korlátozzák a sorok kiválasztását, ezeket a feltételeket az AND operátorral írja.

Példa: Keresse meg az osztály nevét és annak a régiónak a nevét, ahol ez az osztály a (35) osztályhoz tartozik.

SELECT s_dept.name, s_region.name

FROM s_dept, s_region

Előfordulhat, hogy az egyes oszlopnevek elsőbbsége a megfelelő táblázat nevével hosszú időbe telik, különösen akkor, ha a lekérdezés nagy számú oszlopnevet tartalmaz, és a táblák neve hosszú. Ezért a nevek helyett rövidebb táblázati álneveket használhat. A táblázat alias a táblázatban szereplő név után szerepel a FROM szakaszban, és egy másik lekérdezéshez egy másik nevet rendel az asztalhoz. A táblázat aliasok használata csökkentheti az SQL kód mennyiségét, ami csökkenti a memóriafelhasználást.

A táblázati álnevek legfeljebb harminc karaktert tartalmazhatnak, ám annál rövidebbek, annál jobb. Ha a FROM klauzulában egy táblaneveket adott meg, akkor a lekérdezés teljes szövegében a táblázat neve helyett használnia kell.

Példa: Minden egyes ügyfélvállalatnál válassza ki az értékesítési képviselőjének számát, nevét, vezetéknevét és annak a régiónak a nevét, amelyben található.

SELECT c.id, c.name, e.last_name, r.name

FROM s_customer c, s_emp e, s_region r

WHERE c.sales_rep_id = e.id és c.region_id = r.id;

ID NAME LAST_NAME NAME

201 Unisports Giljum Dél-Amerika

202 OJ Atheletics Nguyen Ázsia

203 Delhi Sports Nguyen Ázsia

204 Womansport Magee Észak-Amerika

205 Kam sporttermékei Dumas Ázsia

206 Sportique Dumas Europe

208 Muench Sports Dumas Europe

209 Beisbol Si! Magee Észak-Amerikában

210 Futbol Sonora Giljum Dél-Amerika

14 sor van kiválasztva.

Vegyük észre, hogy az előző példában három tábla van csatlakoztatva, ezért két csatlakozási feltétel van megadva. (Körülmények s_customer asztal és s_emp vegyület és állapotától és s_customer s_region vegyület.) Mindenesetre, a vegyület mennyisége vegyület n állapot táblázatokban kell lennie legalább n-1, különben kap egy Descartes-szorzat táblázatok.

Kapcsolódó cikkek