SQL Subquery Join med Outer Query

Sql Subquery Join Med Outer Query



Når det kommer til at arbejde med relationelle databaser, skal du mestre, hvordan du manipulerer og kombinerer forespørgslerne for at udføre de opgaver, du ønsker. Det er grunden til, at hver relationsdatabasemotor implementerer sin smag af SQL-sproget ved at forsøge at levere exceptionelle funktioner, effektivitet og brugervenlighed for sine brugere.

En af de mest kraftfulde funktioner i SQL er underforespørgsler. Underforespørgsler er et sæt indlejrede forespørgsler i en større og mere kompleks forespørgsel. Underforespørgsler giver dig mulighed for at hente dataene eller udføre mere komplekse operationer som en enkelt enhed.







Vi kan bruge underforespørgslerne til at udføre datafiltrering, sortering, aggregering på flere tabeller og mere.



Men en anden funktion, der er skjult under SQL-underforespørgsler, er kendt som underforespørgselssammenføjninger. Disse ligner underforespørgsler; i stedet er de joinforbindelser, der giver dig mulighed for at bruge underforespørgslerne i en ydre forespørgsel til at sammenføje tabellerne.



Hvis dit hoved snurrer, skal du ikke bekymre dig, fordi delforespørgsler kan være udfordrende at mestre, især i begyndelsen. Denne vejledning forsøger dog at nedbryde underforespørgselssammenføjningerne i elementære trin uden at overlade for meget til tilfældighederne.





Husk, at vi antager, at du ikke er ny til SQL, SQL Joins, SQL Subqueries eller lignende. Men hvis du er det, så tjek vores tutorials om emnerne for at finde ud af mere.

Mestre SQL Outer Joins

Hvis du vil forstå, hvordan man arbejder med underforespørgsler, er det en nøglefaktor at lære, hvordan man arbejder med de ydre sammenføjninger.



Hvis du ikke er bekendt, lader en SQL outer join dig hente alle rækkerne fra én tabel og de matchende rækker fra den anden tabel. Det er lidt mere komplekst end det, inklusive venstre ydre sammenføjning, højre ydre sammenføjning, fuld udvendig sammenføjning osv.

I en SQL venstre ydre joinforbindelse returnerer forespørgslen alle rækkerne fra den venstre tabel og de matchende rækker fra den højre tabel. Forespørgslen inkluderer NULL-værdierne i de resulterende kolonner, hvis der ikke er nogen matchende rækker i den højre tabel.

I tilfælde af en højre ydre joinforbindelse returnerer forespørgslen alle rækkerne fra den højre tabel, men kun de matchende rækker fra den venstre tabel. På samme måde inkluderer forespørgslen NULL-værdierne, hvis der ikke er nogen matchende rækker fra den venstre tabel.

Endelig har vi den fulde ydre samling. Denne join returnerer alle rækkerne fra højre og venstre tabeller og NULL-værdierne for alle ikke-matchende poster.

SQL underforespørgsel joins

Nu hvor vi forstår SQL-underforespørgslerne, lad os tale om underforespørgselssammenføjninger. Underforespørgselssammenføjninger giver os mulighed for at bruge underforespørgslerne i en ydre forespørgsel til at forbinde tabellerne.

Hvis du spørger, er det så det? Ja, det er alt, hvad subquery joins gør.

For bedre at demonstrere dette, tag følgende syntakseksempel, der er demonstreret i det følgende:

VÆLG *
FRA tabel 1
VENSTRE YDRE JOIN (
VÆLG kolonne1, kolonne2
FRA tabel 2
) AS underforespørgsel
ON table1.column3 = subquery.column1;


I den forrige syntaks vælger vi alle kolonnerne fra tabel 1 ved at bruge en venstre ydre joinforbindelse for at forbinde den med en underforespørgsel. Underforespørgslens rolle er at hente de definerede kolonner fra tabel 2. Vi forbinder den derefter med tabel 1 på betingelse af kolonne 2 fra tabel 1 og kolonne 1 fra underforespørgslen.

Praktisk eksempel:

Teoretisk virker det mindre intuitivt, men lad os tage et scenarie fra den virkelige verden ved at tage Sakila-databasen.

Antag, at vi ønsker at hente listen over alle filmene i databasen og deres respektive sprog. Filmenes sprog gemmes i sprogtabellen, og filmnavnene gemmes i filmtabellen.

Filmtabellen har dog en fremmednøgle kaldet 'language_id' kolonnen fra sprogtabellen. Derfor kan vi bruge en underforespørgselssammenføjning med en venstre ydre joinforbindelse til at forbinde de to tabeller som vist i følgende forespørgsel:

VÆLG f.titel, l.navn AS sprog
FRA film f
VENSTRE YDRE JOIN (
VÆLG sprog_id, navn
FRA sprog
) AS l
ON f.language_id = l.language_id;


I det foregående eksempelforespørgsel vælger vi titelkolonnen fra filmtabellen og navnekolonnen fra sprogtabellen.

Vi bruger derefter en underforespørgsel til at vælge sprog_id og navnekolonnen fra sprogtabellen. Det næste trin er at forbinde den med filmtabellen på betingelse af, at sprog_id fra filmtabellen er lig med sprog_id fra sprogtabellen.

For at sikre at alle filmene er inkluderet i resultatet, skal vi bruge den venstre ydre sammenføjning, som består af alle resultaterne fra den venstre tabel, som i dette tilfælde er filmtabellen.

Et eksempel på output er som følger:


Vi kan også gøre det samme med en højre udvendig samling. Syntaksen er som følger:

VÆLG *
FRA tabel 1
HØJRE YDRE JOIN (
VÆLG kolonne1, kolonne2
FRA tabel 2
) AS underforespørgsel
ON table1.column3 = subquery.column1;


Dette opfører sig på samme måde, men inkluderer alle posterne i den højre tabel, selvom der ikke er nogen matchende poster.

Nyttige ting at vide

Det er godt at forstå, at selvom underforespørgselssammenføjningerne er utrolig nyttige og kan optimere din arbejdsgang, så brug dem med forsigtighed.

Undgå for eksempel at bruge underforespørgselssammenføjninger med et stort datasæt. Dette skyldes, at de kan returnere de omfattende registreringer, der kan påvirke databasens ydeevne.

Overvej at bruge forespørgselsanalyseværktøjerne, før du udfører underforespørgselssammenføjninger.

Konklusion

Dette selvstudie udforskede det grundlæggende ved at arbejde med underforespørgsler og underforespørgselssammenføjninger i SQL. I slutningen af ​​denne øvelse forstår du nu, hvordan du arbejder med underforespørgselssammenføjninger, hvorfor du muligvis skal bruge dem, og et praktisk eksempel på, hvordan de kan hjælpe dig i dit arbejdsflow.