Kirjaudu sisään Microsoft-tilillä
Kirjaudu sisään tai luo tili.
Hei,
Käytä toista tiliä.
Sinulla on useita tilejä
Valitse tili, jolla haluat kirjautua sisään.

Joskus haluat ehkä käyttää kyselyn tuloksia kenttänä toisessa kyselyssä tai kyselykentän ehtona. Oletetaan esimerkiksi, että haluat nähdä kunkin tuotteen tilausvälin. Jos haluat luoda kyselyn, joka näyttää tämän aikavälin, sinun on verrattava kutakin tilauspäivämäärää kyseisen tuotteen muihin tilauspäiviin. Näiden tilauspäivien vertailu edellyttää myös kyselyä. Voit asettaa tämän kyselyn pääkyselyn sisälle alikysely avulla.

Voit kirjoittaa alikyselyn lauseke tai Structured Query Language (SQL) -lausekkeeseen SQL-näkymä.

Tämän artikkelin sisältö

Kyselyn tulosten käyttäminen toisen kyselyn kenttänä

Voit käyttää alikyselyä kentän aliaksena. Käytä alikyselyä kentän aliaksena, kun haluat käyttää alikyselyn tuloksia pääkyselyn kenttänä.

Huomautus: Kenttätunnuksena käytettävä alikysely ei voi palauttaa useampaa kuin yhtä kenttää.

Alikyselykentän aliaksen avulla voit näyttää arvoja, jotka ovat riippuvaisia nykyisen rivin muista arvoista, mikä ei ole mahdollista ilman alikyselyä.

Palaamme esimerkiksi esimerkkiin, jossa haluat nähdä kunkin tuotteen tilausvälin. Jos haluat määrittää tämän aikavälin, sinun on verrattava kutakin tilauspäivämäärää kyseisen tuotteen muihin tilauspäiviin. Voit luoda kyselyn, joka näyttää nämä tiedot Northwind-tietokantamallin avulla.

  1. Valitse Tiedosto-välilehdessä Uusi.

  2. Valitse Käytettävissä olevat mallit -kohdassa Mallimallit.

  3. Valitse Northwind ja valitse sitten Luo.

  4. Avaa tietokanta noudattamalla Käynnistysnäyttö-välilehden Northwind Traders -sivun ohjeita ja sulje sitten Sisäänkirjautuminen-valintaikkuna.

  5. Valitse Luo-välilehden Kyselyt-ryhmässä Kyselyn rakennenäkymä.

  6. Valitse Kyselyt-välilehti ja kaksoisnapsauta sitten Tuotetilaukset.

  7. Kaksoisnapsauta Tuotetunnus-kenttää ja Tilauspäivä-kenttää lisätäksesi ne kyselyn rakenneruudukkoon.

  8. Valitse ruudukon Tuotetunnus-sarakkeenLajittele-rivilläNouseva.

  9. Valitse ruudukon Tilauspäivä-sarakkeenLajittele-rivilläLaskeva.

  10. Napsauta ruudukon kolmannessa sarakkeessa Kenttä-riviä hiiren kakkospainikkeella ja valitse sitten pikavalikosta Zoomaus.

  11. Kirjoita tai liitä Zoomaus-valintaikkunaan seuraava lauseke:

    Prior Date: (SELECT MAX([Order Date]) 
    FROM [Product Orders] AS [Old Orders]
    WHERE [Old Orders].[Order Date] < [Product Orders].[Order Date]
    AND [Old Orders].[Product ID] = [Product Orders].[Product ID])

    Tämä lauseke on alikysely. Kullakin rivillä alikysely valitsee viimeisimmän tilauspäivämäärän, joka on uudempi kuin riviin jo liitetty tilauspäivä. Huomaa, miten luot taulukon aliaksen AS-avainsanan avulla, jotta voit verrata alikyselyn arvoja pääkyselyn nykyisen rivin arvoihin.

  12. Kirjoita ruudukon neljänteen sarakkeeseen Kenttä-riville seuraava lauseke:

    Interval: [Order Date]-[Prior Date]

    Tämä lauseke laskee kunkin tilauspäivämäärän ja tuotteen aiemman tilauspäivämäärän välisen välin käyttämällä alikyselyllä määrittämäämme aiemman päivämäärän arvoa.

  13. Valitse Rakenne-välilehden Tulokset-ryhmästä Suorita.

    1. Kysely suoritetaan, ja siinä näkyy luettelo tuotteiden nimistä, tilauspäivämääristä, tilausten aikapäivistä ja tilauspäivien välistä. Tulokset lajitellaan ensin tuotetunnuksen mukaan (nousevassa järjestyksessä) ja sitten tilauspäivän mukaan (laskevassa järjestyksessä).

    2. Huomautus: Koska Tuotetunnus on hakukenttä, Access näyttää oletusarvoisesti hakuarvot (tässä tapauksessa tuotteen nimen) varsinaisten tuotetunnusten sijaan. Vaikka tämä muuttaa näkyviä arvoja, se ei muuta lajittelujärjestystä.

  14. Sulje Northwind-tietokanta.

Sivun alkuun

Alikyselyn käyttäminen kyselykentän ehtona

Voit käyttää alikyselyä kentän ehtona. Käytä alikyselyä kentän ehtona, kun haluat käyttää alikyselyn tuloksia kentän näyttämien arvojen rajoittamiseen.

Oletetaan esimerkiksi, että haluat tarkastella tilausluetteloa, jonka ovat käsitelleet työntekijät, jotka eivät ole myyntiedustajia. Jotta voit luoda tämän luettelon, sinun on verrattava kunkin tilauksen työntekijätunnusta niiden työntekijöiden työntekijöiden tunnuksiin, jotka eivät ole myyntiedustajia. Jos haluat luoda tämän luettelon ja käyttää sitä kentän ehtona, käytä alikyselyä seuraavassa kuvatulla tavalla:

  1. Avaa Northwind.accdb ja ota sen sisältö käyttöön.

  2. Sulje kirjautumislomake.

  3. Valitse Luo-välilehden Muut-ryhmässä Kyselyn rakennenäkymä.

  4. Kaksoisnapsauta Taulukot-välilehdessäTilaukset ja Työntekijät.

  5. Kaksoisnapsauta Tilaukset-taulukossa Työntekijän tunnus - kenttää, Tilaustunnus-kenttää ja Tilauspäivä-kenttää , jos haluat lisätä ne kyselyn rakenneruudukkoon. Kaksoisnapsauta Työntekijät-taulukossa Työtehtävä-kenttää ja lisää se rakenneruudukkoon.

  6. Napsauta Hiiren kakkospainikkeella Työntekijätunnus-sarakkeen Ehdot-riviä ja valitse sitten pikavalikosta Zoomaus.

  7. Kirjoita tai liitä Zoomaus-ruutuun seuraava lauseke:

    IN (SELECT [ID] FROM [Employees] 
    WHERE [Job Title]<>'Sales Representative')

    Tämä on alikysely. Se valitsee kaikki työntekijätunnukset, joissa työntekijällä ei ole myyntiedustajan työnimikettä, ja toimittaa kyseisen tuloksen pääkyselyyn. Tämän jälkeen pääkysely tarkistaa, ovatko Tilaukset-taulukon työntekijöiden tunnukset tulosjoukossa.

  8. Valitse Rakenne-välilehden Tulokset-ryhmästä Suorita.

    Kysely suoritetaan, ja kyselyn tuloksissa näkyy tilausluettelo, jonka ovat käsitelleet työntekijät, jotka eivät ole myyntiedustajia.

Sivun alkuun

Yleisiä SQL-avainsanoja, joita voit käyttää alikyselyn kanssa

Alikyselyssä voi käyttää useita SQL-avainsanoja:

Huomautus: Tämä luettelo ei ole täydellinen. Voit käyttää mitä tahansa kelvollista SQL-avainsanaa alikyselyssä tietomääritysten avainsanoja lukuun ottamatta.

  • KAIKKI    KÄYTÄ ALL-funktiota WHERE-lauseessa, jos haluat noutaa rivit, jotka täyttävät ehdon, verrattuna jokaiseen alikyselyn palauttamaan riviin.

    Oletetaan esimerkiksi, että analysoit opiskelijatietoja oppilaitoksissa. Opiskelijoiden on ylläpidettävä gpa-vähimmäisarvoa, joka vaihtelee pääaineesta pääaineeksi. Pääaineet ja niiden vähimmäissuoritukset tallennetaan Pääaineet-nimiseen taulukkoon, ja tarvittavat opiskelijatiedot tallennetaan Student_Records-nimiseen taulukkoon.

    Jos haluat nähdä luettelon pääaineista (ja niiden vähimmäissuorituksista), joiden jokainen opiskelija, jolla on kyseinen pääaine, ylittää gpa-vähimmäisarvon, voit käyttää seuraavaa kyselyä:

    SELECT [Major], [Min_GPA] 
    FROM [Majors]
    WHERE [Min_GPA] < ALL
    (SELECT [GPA] FROM [Student_Records]
    WHERE [Student_Records].[Major]=[Majors].[Major]);
  • MITÄÄN    WHERE-lauseen ANY-lausekkeen avulla voit noutaa rivit, jotka täyttävät ehdon verrattuna vähintään yhteen alikyselyn palauttamista riveistä.

    Oletetaan esimerkiksi, että analysoit opiskelijatietoja oppilaitoksissa. Opiskelijoiden on ylläpidettävä gpa-vähimmäisarvoa, joka vaihtelee pääaineesta pääaineeksi. Pääaineet ja niiden vähimmäissuoritukset tallennetaan Pääaineet-nimiseen taulukkoon, ja tarvittavat opiskelijatiedot tallennetaan Student_Records-nimiseen taulukkoon.

    Jos haluat nähdä luettelon pääaineista (ja niiden vähimmäissuorituksista), joiden opiskelija, jolla on kyseinen pääaine, ei täytä vähimmäissuorituksia, voit käyttää seuraavaa kyselyä:

    SELECT [Major], [Min_GPA] 
    FROM [Majors]
    WHERE [Min_GPA] > ANY
    (SELECT [GPA] FROM [Student_Records]
    WHERE [Student_Records].[Major]=[Majors].[Major]);

    Huomautus: Voit myös käyttää SOME-avainsanaa samaan tarkoitukseen. SOME-avainsana on synonyymi ANY:lle.

  • OLEMASSA     Käytä WHERE-lauseessa EXISTS-lausetta osoittamaan, että alikyselyn pitäisi palauttaa vähintään yksi rivi. Voit myös esiasentaa ON OLEMASSA-toiminnolla, mikä tarkoittaa, että alikyselyn ei pitäisi palauttaa rivejä.

    Esimerkiksi seuraava kysely palauttaa luettelon tuotteista, jotka löytyvät vähintään yhdestä olemassa olevasta järjestyksestä:

    SELECT *
    FROM [Products]
    WHERE EXISTS
    (SELECT * FROM [Order Details]
    WHERE [Order Details].[Product ID]=[Products].[ID]);

    Kysely palauttaa EI OLE OLEMASSA -toiminnolla luettelon tuotteista, joita ei löydy vähintään yhdestä olemassa olevasta järjestyksestä:

    SELECT *
    FROM [Products]
    WHERE NOT EXISTS
    (SELECT * FROM [Order Details]
    WHERE [Order Details].[Product ID]=[Products].[ID]);
  • IN    WHERE-lauseen IN-toiminnolla voit tarkistaa, että pääkyselyn nykyisen rivin arvo on osa joukkoa, jonka alikysely palauttaa. Voit myös esiasentaa IN-arvon EI-arvoon, jos haluat varmistaa, että pääkyselyn nykyisen rivin arvo ei ole osa joukkoa, jonka alikysely palauttaa.

    Esimerkiksi seuraava kysely palauttaa tilausluettelon (jossa on tilauspäivät), jotka on käsitelty työntekijöillä, jotka eivät ole myyntiedustajia:

    SELECT [Order ID], [Order Date]
    FROM [Orders]
    WHERE [Employee ID] IN
    (SELECT [ID] FROM [Employees]
    WHERE [Job Title]<>'Sales Representative');

    KÄYTTÄMÄLLÄ NOT IN -toimintoa voit kirjoittaa saman kyselyn seuraavasti:

    SELECT [Order ID], [Order Date]
    FROM [Orders]
    WHERE [Employee ID] NOT IN
    (SELECT [ID] FROM [Employees]
    WHERE [Job Title]='Sales Representative');

Sivun alkuun

Tarvitsetko lisäohjeita?

Haluatko lisää vaihtoehtoja?

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

Osallistumalla yhteisöihin voit kysyä kysymyksiä ja vastata niihin, antaa palautetta sekä kuulla lisää asiantuntijoilta, joilla on runsaasti tietoa.

Oliko näistä tiedoista hyötyä?

Kuinka tyytyväinen olet käännöksen laatuun?
Mikä vaikutti kokemukseesi?
Kun valitset Lähetä, palautettasi käytetään Microsoftin tuotteiden ja palveluiden parantamiseen. IT-järjestelmänvalvojasi voi kerätä nämä tiedot. Tietosuojatiedot.

Kiitos palautteesta!

×