Käytetään kohteeseen
Access for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Alikysely on SELECT-lauseke, joka sijaitsee SELECT-, SELECT... INTO, INSERT... INTO-, DELETE- tai UPDATE-lauseke tai jonkin muun alikyselyn sisällä.

Syntaksi

Voit luoda alikyselyn käyttämällä kolmea syntaksimuotoa:

vertailu [ANY | KAIKKI | SOME] (sqlstatement)

lauseke [NOT] IN (sqlstatement)

[EI] EXISTS (sqlstatement)

Alikyselyssä on seuraavat osat:

Osa

Kuvaus

Vertailu

lauseke ja vertailuoperaattori, joka vertaa lauseketta alikyselyn tuloksiin.

lauseke

Lauseke, jonka alikyselyn tulosjoukkoa etsitään.

sql-lauseke

SELECT-lauseke, joka seuraa samaa muotoa ja sääntöjä kuin mikä tahansa muu SELECT-lauseke. Sen on oltava sulkeissa.

Huomautuksia

Voit käyttää alikyselyä lausekkeen sijaan SELECT-lausekkeen kenttäluettelossa tai WHERE- tai HAVING-lauseessa. Alikyselyssä käytetään SELECT-lauseketta yhden tai useamman tietyn arvon määrittämiseen WHERE- tai HAVING-lauselausekkeessa.

Käytä SYNonyymiä ANY- tai SOME-predikaattia pääkyselyn tietueiden noutamiseen, jotka vastaavat vertailua alikyselyssä noudettuihin tietueisiin. Seuraavassa esimerkissä palautetaan kaikki tuotteet, joiden yksikköhinta on suurempi kuin minkä tahansa myydyn tuotteen hinta vähintään 25 prosentin alennuksella:

SELECT * FROM Products WHERE UnitPrice > ANY (SELECT UnitPrice FROM OrderDetails WHERE Discount >= .25);

Käytä ALL-predikaattia noutaaksesi vain pääkyselyn tietueet, jotka täyttävät vertailun kaikkiin alikyselyssä noudettuihin tietueisiin. Jos muutit edellisessä esimerkissä ANY-arvoksi KAIKKI, kysely palauttaisi vain ne tuotteet, joiden yksikköhinta on suurempi kuin kaikkien myytyjen tuotteiden yksikköhinta vähintään 25 prosentin alennuksella. Tämä on paljon rajoittavampaa.

IN-predikaatin avulla voit noutaa vain ne pääkyselyn tietueet, joiden alikyselyn jotkin tietueet sisältävät yhtäläisyysarvon. Seuraavassa esimerkissä palautetaan kaikki tuotteet, joiden alennus on vähintään 25 prosenttia:

SELECT * FROM Products WHERE ProductID IN (SELECT ProductID FROM OrderDetails WHERE Discount >= .25);

Vastaavasti VOIT NOUTAA NOT IN -toiminnolla vain ne pääkyselyn tietueet, joiden alikyselyn yksikään tietue ei sisällä yhtä suuriarvoista arvoa.

Käytä EXISTS-predikaattia (valinnaisella EI varatulla sanalla) tosi- ja epätosivertailuissa sen määrittämiseksi, palauttaako alikysely tietueita.

Voit myös käyttää alikyselyssä taulukon nimitunnuksia viittaamaan alikyselyn ulkopuolisessa FROM-lauseessa lueteltuihin taulukoihin. Seuraavassa esimerkissä palautetaan niiden työntekijöiden nimet, joiden palkat ovat yhtä suuria tai suurempia kuin niiden työntekijöiden keskipalkka, joilla on sama tehtävänimike. Työntekijät-taulukolle annetaan tunnus "T1":

SELECT LastName, FirstName, Title, Salary FROM Employees AS T1 WHERE Salary >= (SELECT Avg(Salary) FROM Employees WHERE T1.Title = Employees.Title) Order by Title;

Edellisessä esimerkissä AS- varattu sana on valinnainen.

Jotkin alikyselyt ovat sallittuja ristiintaulukointikyselyissä – erityisesti predikaattina (WHERE-lauseessa). Alikyselyt tulosteina (SELECT-luettelossa olevat) eivät ole sallittuja ristiintaulukointikyselyissä.

Tarvitsetko lisäohjeita?

Haluatko lisää vaihtoehtoja?

Tutustu tilausetuihin, selaa harjoituskursseja, opi suojaamaan laitteesi ja paljon muuta.