Több értéket visszaadó kérések

Ez a csoport az IN, NOT IN, vagy az ANY vagy ALL kulcsszavakkal rendelkező összehasonlító operátorral kezdődő felkéréseket tartalmaz.

IN és NOT IN indítással felmerülő kérések

Az alany lekérdezésének eredménye, IN-val és NOT IN-val kezdődően, olyan lista, amely nulla vagy több értéket tartalmaz. Miután az alanyi lekérdezés eredményeket adott, egy külső lekérdezés elkezdi feldolgozni őket.

A belső kéréskiválasztási lista csak egy kifejezést vagy oszlopnevet tartalmazhat.

Az oszlop, amelynek a neve a külső utasítás WHERE mondatában megadva, összeegyeztethetőnek kell lennie az oszlophoz tartozó névvel, amelyet a kéréskiválasztási listában megadott.

Szerezd meg a Seattle-i ügyfelek listáját, akik a bérleti szerződést kötötték.

SQL:
SELECT keresztnév, név, régió
FROM tbl_clients
WHERE régió = "Seattle" ÉS ügyfél_ID IN (
SELECT ügyfél_id
FROM tbl_contract
JOIN tbl_service ON tbl_contract.service_id = tbl_service.service_id
WHERE szolgáltatás = "Berendezés kölcsönzése")

Ügyeljen arra, hogy az egyesülések és a WHERE klauzula számos feltételének elfogadható legyen mind a belső, mind a külső lekérdezésben.

Szerezd meg a Seattle-i ügyfelek listáját, akik bérleti szerződést írtak le a berendezésekről (például a fentiek fordítottja).

SQL:
SELECT keresztnév, név, régió
FROM tbl_clients
WHERE régió = 'Seattle' ÉS ügyfél_ID NOT IN (
SELECT ügyfél_id
FROM tbl_contract
Csatlakozás tbl_service ON tbl_contract.service_id = tbl_service`service_id
WHERE szolgáltatás = "Berendezés kölcsönzése")

Az összehasonlító operátorokkal kezdődő felkérések, beleértve a MINDEN vagy MINDEN kulcsszavakat is

Egy másik típusú lekérdezésekben, amelyek nem térnek vissza vagy nem adnak több sort, összehasonlító operátort használnak, a (z) ANY vagy ALL kulcsszavakkal módosítva.

Ha az alanyi lekérdezést az ALL kulcsszó előzi meg, akkor az összehasonlítási feltétel csak akkor tekinthető teljesítettnek, ha az az összes kapott értékre a kapott alkamazási oszlopban kerül végrehajtásra.

SQL:
SELECT contract_id, contract_date
FROM tbl_contract
WHERE contract_date> ALL (
SELECT contract_date
FROM tbl_contract BEJELENTÉS tbl_service ON tbl_contract.service_id = tbl_service.service_id
WHERE szolgáltatás = "Berendezés kölcsönzése")

A lekérdezés 2 lépésben történik. Először is, a belső lekérdezés kiválasztja a berendezések bérleti szerződéseinek megkötésére vonatkozó dátumok listáját. A külső lekérdezés megtalálja a legnagyobb értéket a dátumlistában és a táblázatban szereplő minden szerződéshez. Tbl_contract határozza meg, hogy a contract_date mező nagy dátumot tartalmaz-e.

Így megkapjuk a szerződések bérbeadása után kötött szerződések listáját.

Az ALL operátort rendszerint egyenlőtlenségekkel, és nem egyenlőséggel használják fel, mert az "összes számmal megegyező" érték, amely ebben az esetben az alany lekérdezésének eredményeképpen megy végbe, ha minden eredmény azonos.

Az SQL-ben a kifejezés <> MINDEN igazán azt jelenti, hogy nem egyenlő az alanykérdés eredményeivel.

Ha a kérés szövegét a (z) ANY kulcsszó előzi meg, akkor az összehasonlítási feltétel akkor teljesül, ha legalább egy (vagy több) érték kielégítésre került az adott kérés oszlopában található oszlopban.

SQL:
SELECT contract_id, contract_date
FROM tbl_contract WHERE contract_date SELECT contract_date
FROM tbl_contract JOIN tbl_serviceON tbl_contract.service_id = tbl_service.service_id
WHERE szolgáltatás = "Berendezés kölcsönzése")

A fenti kérelem az első szolgáltatási szerződés megkötését megelőzően kötött szerződéseket tartalmazza.

Ha a belső lekérdezés, mindenben vagy bármiben, üres értéket ad vissza, úgy tekinthető, hogy a lekérdezés egésze sikertelen. Ebben az esetben nem kap semmilyen eredményt, mert nem hasonlítható össze a NULL értékkel.

Kapcsolódó cikkek