Creative Saplings

Hur kombinerar jag resultat från flera SQL-tabeller (tips: det finns tre sätt)

november 26, 2020
No Comments

Många gånger i en relationsdatabas finns informationen du vill visa i din fråga mer än ett bord. Detta väcker frågan ”Hur kombinerar du resultat från mer än en tabell?”

Alla exemplen för den här lektionen är baserade på Microsoft SQL Server Management Studio och AdventureWorks2012-databasen. Du kan komma igång med dessa gratis verktyg som använder min guide Komma igång med SQL Server.

Hur kan jag kombinera resultat från mer än en fråga?

SQL skulle inte vara ett särskilt användbart språk om det inte ’t ger ett enkelt sätt för dig att kombinera resultat från mer än en fråga. Lyckligtvis finns det tre huvudsakliga sätt att kombinera data från flera tabeller. Vi går igenom dessa kort här och ger länkar till mer ingående artiklar.

Tre huvudmetoder för att kombinera data

Data i relationsdatabastabeller är ordnade i rader och kolumner. När vi undersöker sätt att kombinera data, kom ihåg att slutresultatet blir att antingen lägga till fler kolumner i ett resultat, kanske från en annan relaterad tabell eller rader, genom att ta en uppsättning rader från två eller flera tabeller s.

När de flesta lär sig att kombinera data som de lär sig om:

  1. JOIN – Du kan använda joins för att kombinera kolumner från en eller flera frågor till ett resultat.
  2. UNION – Använd Unions och andra setoperatorer för att kombinera rader från en eller flera frågor till ett resultat.
  3. Subfrågor – Ibland kallas kapslade frågor, dessa kan användas för att utföra en separat sökning i databasen visade att resultat kan användas i en annan fråga.

Fogar

Jag tycker om att tänka på fogar som det lim som sätter databasen ihop igen. Relationsdatabaser normaliseras vanligtvis för att göra data lättare att underhålla och förbättra prestanda, men slutresultatet är att information är uppdelad i många tabeller. Du kan använda Joins för att kombinera informationen igen till ett mer mänskligt läsbart format. Uppgifterna kombineras om genom att matcha kolumner från varje tabell.

I alla fall kräver sammanfogningar två huvudingredienser: Två tabeller och ett kopplingsvillkor. Tabellerna är vad vi kommer att använda för att dra raderna och kolumnerna och kopplingsvillkoret är hur vi tänker matcha kolumnerna mellan tabellerna.

Exempel JOIN

SELECT Person.FirstName, Person.LastName, PersonPhone.PhoneNumber FROM Person.Person INNER JOIN Person.PersonPhone ON Person.BusinessEntityID = PersonPhone.BusinessEntityID

Det finns två huvudtyper av sammanfogningar. Inre föreningar och yttre föreningar.

Inre föreningar returnerar endast en resulterande rad om kopplingsvillkoret matchar i båda tabellerna. Inre föreningar används huvudsakligen för att matcha den primära nyckeln i en tabell, en främmande nyckel i en annan.

Den andra typen av koppling är en yttre koppling. Yttre sammanfogningar returnerar alltid minst en rad för huvudtabellen, kallad den vänstra eller högra tabellen, och nullvärden i motsvarande kolumner i den icke-matchande kolumnen. Yttre sammanfogningar är användbara för att hitta data som inte matchar.

Det är viktigt att notera att sammanfogningar kan returnera fler rader än vad som finns i endera tabellen tillsammans. Sammankopplingarna av matchningar. Om du går med i två tabeller, en som innehåller 5 rader och den andra 10, kan resultatet innehålla allt från 0 till 50 rader beroende på kopplingsvillkor.

Fackföreningar

En UNION är används för att kombinera raderna med två eller flera frågor till ett resultat. Unionen kallas en uppsättningsoperatör.

Det finns några speciella villkor som måste uppstå för att en fackförening ska fungera. Först måste varje fråga ha samma antal kolumner. För det andra måste datatyperna för dessa kolumner vara kompatibla. Generellt sett måste varje fråga returnera samma antal och typ av kolumner.

Ett praktiskt exempel på union är när två tabeller innehåller artikelnummer och du vill skapa en kombinerad lista för en katalog. Du kan antingen välja att slutresultatet ska vara en unik lista för den kombinerade frågan eller om du använder UNION ALL returnerar alla rader från varje tabell.

Exempel UNION

SELECT C.NameFROM Production.ProductCategory AS CUNIONSELECT S.NameFROM Production.ProductSubcategory AS S

Förutom Union finns det ett par andra praktiska set-operatorer:

  • INTERSECT – Du kan använda detta för att bara returnera rader som är vanliga mellan två tabeller.
  • EXCEPT – Du kan använda detta för att returnera rader som finns på en tabell, men som inte finns i en annan.

När du fortsätter för att lära dig mer SQL hittar du att du kan använda sammanfogningar för att skriva motsvarande uttalanden för Intersect och Except, men det finns inga motsvarigheter för Union.

Underfrågor

Underfrågor kallas ibland kapslade frågor. De är frågor som definieras i andra frågor. Underfrågor kan vara förvirrande. Jag tror att mycket av detta härrör från det faktum att de kan användas på många ställen i ett SQL select-uttalande, och för flera ändamål!

Till exempel, här är några områden du kan se en underfråga:

  • SELECT-sats – Används för att returnera ett värde. Om du till exempel frågar efter en försäljningstabell kan du inkludera den totala försäljningen genom att returnera en summa av all försäljning från en underfråga.
  • VAR-sats – Underfrågor kan användas i var-satsen i jämförelser. Du kan skapa en jämförelse för att jämföra försäljningen med det totala genomsnittet. Det totala genomsnittet skulle returneras från en underfråga. Du kan också använda underfrågor i medlemsoperatörer som IN. I stället för att hårdkoda in-satsen kan du använda en underfråga för att göra den mer dynamisk.
  • HAVING-sats – Ett enda värde från en underfråga ingår i HAVING-satsens jämförelser.

Exempel på underfråga

SELECT SalesOrderID, LineTotal, (SELECT AVG(LineTotal) FROM Sales.SalesOrderDetail) AS AverageLineTotalFROM Sales.SalesOrderDetail

När det används i utvalda klausuler och jämförelseoperatorer som lika med, större än och mindre än , en underfråga kan bara returnera en rad. Om det används tillsammans med en medlemsoperatör, t.ex. IN, är det OK att frågan returnerar en eller flera rader.

Articles
Previous Post

Anvisningar för plantering av klöverfrö

Next Post

43+ Superb College Graduation Invitation Wordings Ideas (Svenska)

Lämna ett svar Avbryt svar

Senaste inläggen

  • Världens bästa fotoskolor, 2020
  • Suveräna medborgare tar sin regeringsfilosofi mot vägarna
  • Guide för reparation av stuckaturer
  • Muckrakers (Svenska)
  • Precision Oncology (Svenska)

Arkiv

  • februari 2021
  • januari 2021
  • december 2020
  • november 2020
  • oktober 2020
  • september 2020
  • Deutsch
  • Nederlands
  • Svenska
  • Norsk
  • Dansk
  • Español
  • Français
  • Português
  • Italiano
  • Română
  • Polski
  • Čeština
  • Magyar
  • Suomi
  • 日本語
  • 한국어
Proudly powered by WordPress | Theme: Fmi by Forrss.