Logg på med Microsoft
Logg på, eller opprett en konto.
Hei,
Velg en annen konto.
Du har flere kontoer
Velg kontoen du vil logge på med.

Noen ganger vil du kanskje bruke resultatene av en spørring som et felt i en annen spørring, eller som vilkår for et spørringsfelt. Anta for eksempel at du vil se intervallet mellom ordrer for hvert av produktene dine. Hvis du vil opprette en spørring som viser dette intervallet, må du sammenligne hver ordredato med andre ordredatoer for produktet. Sammenligning av disse ordredatoene krever også en spørring. Du kan neste denne spørringen i hovedspørringen ved hjelp av en delspørring.

Du kan skrive en delspørring i en uttrykk eller i en Structured Query Language (SQL)-setning i SQL-visning.

I denne artikkelen

Bruke resultatene av en spørring som et felt i en annen spørring

Du kan bruke en delspørring som et feltalias. Bruk en delspørring som feltalias når du vil bruke delspørringsresultatene som et felt i hovedspørringen.

Obs!: En delspørring som du bruker som feltalias, kan ikke returnere mer enn ett felt.

Du kan bruke et feltalias for delspørring til å vise verdier som avhenger av andre verdier i gjeldende rad, noe som ikke er mulig uten å bruke en delspørring.

La oss for eksempel gå tilbake til eksemplet der du vil se intervallet mellom ordrer for hvert av produktene dine. Hvis du vil fastslå dette intervallet, må du sammenligne hver ordredato med andre ordredatoer for produktet. Du kan opprette en spørring som viser denne informasjonen ved hjelp av databasemalen Northwind.

  1. Klikk NyFil-fanen.

  2. Klikk Eksempelmaler under Tilgjengelige maler.

  3. Klikk Gastronor, og klikk deretter Opprett.

  4. Følg instruksjonene på Gastronor delikatesser-siden (i objektkategorien Oppstartskjermbilde) for å åpne databasen, og lukk deretter vinduet Påloggingsdialog.

  5. I fanen Opprett i gruppen Spørringer, klikker du på Spørreutforming.

  6. Klikk fanen Spørringer , og dobbeltklikk deretter Produktordrer.

  7. Dobbeltklikk produkt-ID-feltet og Ordredato-feltet for å legge dem til i utformingsrutenettet for spørringen.

  8. Velg Stigende i Sorter-raden i produkt-ID-kolonnen i rutenettet.

  9. Velg Synkende i Sorter-raden i Ordredato-kolonnen i rutenettet.

  10. Høyreklikk feltraden i den tredje kolonnen i rutenettet, og klikk deretter Zoom på hurtigmenyen.

  11. Skriv eller lim inn følgende uttrykk i dialogboksen Zoom :

    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])

    Dette uttrykket er delspørringen. For hver rad velger delspørringen den nyeste ordredatoen som er mindre nylig enn ordredatoen som allerede er knyttet til raden. Legg merke til hvordan du bruker AS-nøkkelordet til å opprette et tabellalias, slik at du kan sammenligne verdier i delspørringen med verdier i gjeldende rad i hovedspørringen.

  12. Skriv inn følgende uttrykk i feltraden i den fjerde kolonnen i rutenettet:

    Interval: [Order Date]-[Prior Date]

    Dette uttrykket beregner intervallet mellom hver ordredato og den forrige ordredatoen for produktet, ved hjelp av verdien for forrige dato som vi definerte ved hjelp av en delspørring.

  13. Klikk på Kjør i Resultater-gruppen på Utforming-fanen.

    1. Spørringen kjører og viser en liste over produktnavn, ordredatoer, tidligere bestillingsdatoer og intervallet mellom ordredatoer. Resultatene sorteres først etter produkt-ID (i stigende rekkefølge), og deretter etter ordredato (i synkende rekkefølge).

    2. Obs!: Fordi produkt-ID er et oppslagsfelt, viser Access som standard oppslagsverdiene (i dette tilfellet produktnavnet), i stedet for de faktiske produkt-ID-ene. Selv om dette endrer verdiene som vises, endres ikke sorteringsrekkefølgen.

  14. Lukk Northwind-databasen.

Til toppen av siden

Bruke en delspørring som vilkår for et spørringsfelt

Du kan bruke en delspørring som feltkriterium. Bruk en delspørring som feltkriterium når du vil bruke resultatene av delspørringen til å begrense verdiene som feltet viser.

Anta for eksempel at du vil se gjennom en liste over ordrer som ble behandlet av ansatte som ikke er selgere. Hvis du vil generere denne listen, må du sammenligne ansatt-ID-en for hver ordre med en liste over ansatt-ID-ene for ansatte som ikke er selgere. Hvis du vil opprette denne listen og bruke den som et feltkriterium, bruker du en delspørring, som vist i følgende fremgangsmåte:

  1. Åpne Northwind.accdb og aktiver innholdet.

  2. Lukk påloggingsskjemaet.

  3. Klikk på Spørringsutforming i Annet-gruppen på Opprett-fanen.

  4. Dobbeltklikk Ordrer og AnsatteTabeller-fanen.

  5. Dobbeltklikk ansatt-ID-feltet, Ordre-ID-feltet og Ordredato-feltet i Ordrer-tabellen for å legge dem til i utformingsrutenettet for spørringen. Dobbeltklikk jobbtittelfeltet i Ansatte-tabellen for å legge det til i utformingsrutenettet.

  6. Høyreklikk vilkårsraden i kolonnen Ansatt-ID, og klikk deretter Zoom på hurtigmenyen.

  7. Skriv eller lim inn følgende uttrykk i Zoom-boksen :

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

    Dette er delspørringen. Den velger alle ansatt-ID-ene der den ansatte ikke har en stilling som salgsrepresentant, og leverer resultatet som er satt til hovedspørringen. Hovedspørringen kontrollerer deretter om ansatt-IDer fra Ordrer-tabellen er i resultatsettet.

  8. Klikk på Kjør i Resultater-gruppen på Utforming-fanen.

    Spørringen kjører, og spørringsresultatene viser en liste over ordrer som ble behandlet av ansatte som ikke er selgere.

Til toppen av siden

Vanlige SQL-nøkkelord som du kan bruke med en delspørring

Det finnes flere SQL-nøkkelord som du kan bruke med en delspørring:

Obs!: Denne listen er ikke uttømmende. Du kan bruke et hvilket som helst gyldig SQL-nøkkelord i en delspørring, unntatt nøkkelord for datadefinisjon.

  • ALLE    Bruk ALL i en WHERE-setning til å hente rader som oppfyller betingelsen sammenlignet med hver rad som returneres av delspørringen.

    Anta for eksempel at du analyserer elevdata på en høyskole. Studentene må opprettholde et minimum GPA, som varierer fra store til store. Hovedfagsstudenter og deres minste hovedfagskontorer lagres i en tabell kalt Hovedfagskontorer, og den relevante studentinformasjonen lagres i en tabell kalt Student_Records.

    Hvis du vil se en liste over hovedfagskontorer (og minimums-GPA-er) der hver elev med denne hovedgruppen overskrider minstekravet for GPA, kan du bruke følgende spørring:

    SELECT [Major], [Min_GPA] 
    FROM [Majors]
    WHERE [Min_GPA] < ALL
    (SELECT [GPA] FROM [Student_Records]
    WHERE [Student_Records].[Major]=[Majors].[Major]);
  • NOEN    Bruk ANY i en WHERE-setningsdel til å hente rader som oppfyller betingelsen sammenlignet med minst én av radene som returneres av delspørringen.

    Anta for eksempel at du analyserer elevdata på en høyskole. Studentene må opprettholde et minimum GPA, som varierer fra store til store. Hovedfagsstudenter og deres minste hovedfagskontorer lagres i en tabell kalt Hovedfagskontorer, og den relevante studentinformasjonen lagres i en tabell kalt Student_Records.

    Hvis du vil se en liste over hovedfagskontorer (og deres minste gpa-er) som alle studenter med denne hovedfagsgruppen ikke oppfyller minstekravet for GPA for, kan du bruke følgende spørring:

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

    Obs!: Du kan også bruke SOME-nøkkelordet til samme formål. SOME-nøkkelordet er synonymt med ANY.

  • EXISTS    Bruk EXISTS i en WHERE-setning for å angi at en delspørring skal returnere minst én rad. Du kan også innlede EXISTS med NOT for å angi at en delspørring ikke skal returnere noen rader.

    Følgende spørring returnerer for eksempel en liste over produkter som finnes i minst én eksisterende rekkefølge:

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

    Spørringen bruker IKKE FINNES, og returnerer en liste over produkter som ikke finnes i minst én eksisterende rekkefølge:

    SELECT *
    FROM [Products]
    WHERE NOT EXISTS
    (SELECT * FROM [Order Details]
    WHERE [Order Details].[Product ID]=[Products].[ID]);
  • I    Bruk IN i en WHERE-setning for å bekrefte at en verdi i gjeldende rad i hovedspørringen er en del av settet som delspørringen returnerer. Du kan også innlede IN med NOT for å bekrefte at en verdi i gjeldende rad i hovedspørringen ikke er en del av settet som delspørringen returnerer.

    Følgende spørring returnerer for eksempel en liste over ordrer (med ordredatoer) som ble behandlet av ansatte som ikke er selgere:

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

    Ved å bruke NOT IN kan du skrive den samme spørringen på denne måten:

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

Til toppen av siden

Trenger du mer hjelp?

Vil du ha flere alternativer?

Utforsk abonnementsfordeler, bla gjennom opplæringskurs, finn ut hvordan du sikrer enheten og mer.

Fellesskap hjelper deg med å stille og svare på spørsmål, gi tilbakemelding og høre fra eksperter med stor kunnskap.

Var denne informasjonen nyttig?

Hvor fornøyd er du med språkkvaliteten?
Hva påvirket opplevelsen din?
Når du trykker på Send inn, blir tilbakemeldingen brukt til å forbedre Microsoft-produkter og -tjenester. IT-administratoren kan samle inn disse dataene. Personvernerklæring.

Takk for tilbakemeldingen!

×