SQL Subquery Join med Outer Query

Sql Subquery Join Med Outer Query



Når det gjelder å jobbe med relasjonsdatabaser, må du mestre hvordan du manipulerer og kombinerer spørringene for å utføre oppgavene du ønsker. Det er derfor hver relasjonsdatabasemotor implementerer sin smak av SQL-språket ved å forsøke å gi eksepsjonelle funksjoner, effektivitet og brukervennlighet for sine brukere.

En av de kraftigste funksjonene til SQL er underspørringer. Underspørringer er et sett med nestede søk i et større og mer komplekst søk. Underspørringer lar deg hente dataene eller utføre mer komplekse operasjoner som en enkelt enhet.







Vi kan bruke underspørringene til å utføre datafiltrering, sortering, aggregering på flere tabeller og mer.



En annen funksjon som er skjult under SQL-underspørringer er imidlertid kjent som underspørringssammenføyninger. Disse ligner på underspørringer; i stedet er de sammenføyninger som lar deg bruke underspørringene i en ytre spørring for å slå sammen tabellene.



Hvis hodet ditt snurrer, ikke bekymre deg fordi delspørringssammenføyninger kan være utfordrende å mestre, spesielt i begynnelsen. Denne opplæringen prøver imidlertid å bryte ned delspørringssammenføyningene i elementære trinn uten å overlate for mye til tilfeldighetene.





Husk at vi antar at du ikke er ny på SQL, SQL Joins, SQL Subqueries eller lignende. Men hvis du er det, sjekk veiledningene våre om emnene for å finne ut mer.

Mestre SQL Outer Joins

Hvis du vil forstå hvordan du arbeider med underspørringssammenføyninger, er det en nøkkelfaktor å lære hvordan du jobber med de ytre sammenføyningene.



Hvis du ikke er kjent, lar en ytre SQL-kobling deg hente alle radene fra én tabell og de samsvarende radene fra den andre tabellen. Det er litt mer komplisert enn det, inkludert venstre ytre skjøt, høyre ytre skjøt, full ytre skjøt osv.

I en SQL venstre ytre sammenføyning returnerer spørringen alle radene fra den venstre tabellen og de samsvarende radene fra den høyre tabellen. Spørringen inkluderer NULL-verdiene i de resulterende kolonnene hvis det ikke er noen samsvarende rader i den høyre tabellen.

I tilfelle av en høyre ytre sammenføyning, returnerer spørringen alle radene fra den høyre tabellen, men bare de samsvarende radene fra den venstre tabellen. På samme måte inkluderer spørringen NULL-verdiene hvis det ikke er noen samsvarende rader fra den venstre tabellen.

Endelig har vi full ytre skjøt. Denne sammenføyningen returnerer alle radene fra høyre og venstre tabell og NULL-verdiene for alle ikke-matchende poster.

SQL Subquery Joins

Nå som vi forstår SQL-underspørringene, la oss snakke om underspørringssammenføyninger. Delspørringssammenføyninger lar oss bruke delspørringene i en ytre spørring for å slå sammen tabellene.

Hvis du spør, er det det? Ja, det er alt som subquery joins gjør.

For å demonstrere dette bedre, ta følgende syntakseksempel som er demonstrert i følgende:

PLUKKE UT *
FRA tabell 1
VENSTRE YTRE JOIN (
VELG kolonne1, kolonne2
FRA tabell 2
) AS underspørring
ON table1.column3 = subquery.column1;


I forrige syntaks velger vi alle kolonnene fra tabell én ved å bruke en venstre ytre sammenføyning for å slå den sammen med en underspørring. Rollen til underspørringen er å hente de definerte kolonnene fra tabell 2. Vi kobler den så sammen med tabell 1 på betingelse av kolonne 2 fra tabell 1 og kolonne 1 fra underspørringen.

Praktisk eksempel:

Teoretisk virker det mindre intuitivt, men la oss ta et virkelighetsscenario ved å ta Sakila-databasen.

Anta at vi ønsker å hente listen over alle filmene i databasen og deres respektive språk. Språkene til filmene lagres i språktabellen, og filmnavnene lagres i filmtabellen.

Imidlertid har filmtabellen en fremmednøkkel kalt 'language_id'-kolonnen fra språktabellen. Derfor kan vi bruke en underspørringssammenføyning med en venstre ytre sammenføyning for å slå sammen de to tabellene som vist i følgende spørring:

VELG f.tittel, l.navn AS språk
FRA film f
VENSTRE YTRE JOIN (
SELECT language_id, name
FRA språk
) AS l
PÅ f.language_id = l.language_id;


I forrige eksempelspørring velger vi tittelkolonnen fra filmtabellen og navnekolonnen fra språktabellen.

Vi bruker deretter en underspørring for å velge language_id og navnekolonnen fra språktabellen. Neste trinn er å slå den sammen med filmtabellen under forutsetning av at language_id fra filmtabellen er lik language_id fra språktabellen.

For å sikre at alle filmene er inkludert i resultatet, må vi bruke den venstre ytre skjøten som består av alle resultatene fra den venstre tabellen som i dette tilfellet er filmtabellen.

Et eksempelutgang er som følger:


Vi kan også gjøre det samme med høyre ytre skjøt. Syntaksen er som følger:

PLUKKE UT *
FRA tabell 1
HØYRE YTRE SKJØT (
VELG kolonne1, kolonne2
FRA tabell 2
) AS underspørring
ON table1.column3 = subquery.column1;


Dette oppfører seg på samme måte, men inkluderer alle postene i den høyre tabellen selv om det ikke er noen samsvarende poster.

Nyttige ting å vite

Det er godt å forstå at selv om delspørringssammenføyningene er utrolig nyttige og kan optimere arbeidsflyten din, bruk dem med forsiktighet.

Unngå for eksempel å bruke underspørringssammenføyninger med et stort datasett. Dette er fordi de kan returnere de omfattende postene som kan påvirke databaseytelsen.

Vurder å bruke spørringsanalyseverktøyene før du utfører noen delspørringssammenføyninger.

Konklusjon

Denne opplæringen utforsket det grunnleggende om å jobbe med underspørringer og underspørringssammenføyninger i SQL. På slutten av denne opplæringen forstår du nå hvordan du arbeider med delspørringssammenføyninger, hvorfor du kanskje må bruke dem, og et praktisk eksempel på hvordan de kan hjelpe deg i arbeidsflyten din.