Súgó - by - sql (DML) használja a lekérdezés több táblából

Átnevezés is szükség van, ha használják a FROM záradék segédlekérdezésként. Így, az első példa lehet újraírni az alábbiak szerint:

SELECT DISTINCT PC.model, készítő






PC,
(SELECT készítő, modell
AZ Termék) AS prod
WHERE PC.model = prod.model ÉS ár <600;

Figyeljük meg, hogy ebben az esetben az egyéb kikötések a SELECT már nem lehet használni a selejtező termék. a termék táblázatban már nem használják. Ehelyett használt álnév prod. Ezen felül, akkor most csak azokra a termék tábla területén. amely szerepel a segédlekérdezés.

explicit művelet kapcsolat két vagy több tábla is meg lehet határozni a FROM záradék. Közül számos vegyület a leírt műveleteket a standard SQL nyelv, számos adatbázis szerverek egyetlen támogatott művelet csatlakozni állítmány. Szintaxis vegyület állítmány a formája:

A vegyület lehet sem belső (belső), vagy az egyik a külső (külső). Funkció szavak belső és külső elhagyható, mivel a külső kapcsolat egyedileg határozza meg a típusát - LEFT (balra), a jobb (jobb) vagy teljes (full), hanem egyszerűen azt jelenti REGISZTRÁCIÓ belső kapcsolatot.

A predikátum feltétel határozza vegyületet sorok különböző táblázatok. Így belső összekapcsolás azt jelenti, hogy az eredmény beállítva csak közé tartoznak azok a vegyületek, a sorok a két táblázat, melyek értéke a predikátum egyenlő TRUE. Általános szabály, hogy az állítmány meghatározza az equi-join a külső és az elsődleges kulcs csatlakozott asztalok, bár ez nem kötelező.







Példa. Keresse meg a gyártó, modellszám és ár minden számítógép csatlakozik az adatbázis:

SELECT kávéfőző, Product.model AS model_1, PC.model AS model_2, ár
AZ Termék inner join PC BE PC.model = Product.model
ORDER BY készítő, PC.model;


Ebben a példában az eredmény meg fog kapcsolódni csak azokat a sorokat a PC és a termék táblázatokat. akik ugyanazt a típusszám.
Hogy ellenőrizzék az eredmény szerepel, mint a modell száma a PC asztalra. és a termék tábla:

Mivel a modell 2111 és 2112 a Product tábla nem a PC asztalon. a következő területeken: a PC-tábla tartalmazza NULL.
Vegyület JOBB REGISZTRÁCIÓ vissza vegyületet BAL REGISZTRÁCIÓ. azaz Az eredmény meg fog tartalmazni az összes sort a második táblázatból, amelyet kapcsolatban csak azokat a sorokat az első tábla, amelyre az összekapcsolási feltétel. Ebben az esetben a bal oldali csatlakozó

Termék LEFT JOIN PC BE PC.model = Product.model

Ez egyenértékű a megfelelő, a vegyület

PC RIGHT JOIN terméket PC.model = Product.model

SELECT kávéfőző, Product.model AS model_1, PC.model AS model_2, ár
AZ Termék RIGHT JOIN PC BE PC.model = Product.model
ORDER BY készítő, PC.model;


Ez ugyanazt az eredményt adja, mint a belső kapcsolat, mivel a jobb oldali táblázat (PC) nincs modell, hogy nem voltak jelen a táblázat bal (termék), ami egészen természetes a kapcsolat, mint a „one-to-many”, amely elérhető a PC asztal és a termék. Végül a teljes vegyületet (FULL JOIN) az eredmény tábla alá nem csak azokat a sorokat, amelyek ugyanazokat az értékeket az oszlopokban összehasonlított, hanem az összes sor forrás táblák nem rendelkező megfelelő értékek a másik asztalnál. Ezeket a sorokat, az összes oszlopot a táblázat, amelyben a találat, tele NULL értékeket. Teljes vegyület kombinációja jobb és bal külső ízületek.
Mivel a kérelem táblázatok A és B adott az a fejezet elején,

SELECT A. *, B. *
Egy teljes REGISZTRÁCIÓ B
A még éppen elég volt = B.c;


a következő eredményt adja:




Kapcsolódó cikkek