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.