..


Sponsrade länkar

Använda UNION för att kombinera resultaten från två tabeller

Artikel skriven av Max Bossi

SQL-språket ger oss ett ganska enkelt sätt att kombinera, inom samma SELECT, resultaten från två olika tabeller.

För att uppnå detta är det dags att använda UNIONENS all'opertore som kommer i själva verket en förening av de resultat som erhållits genom att fråga de två tabellerna.

Observera att för att kunna användas på rätt sätt, är det dags att unionen operatör:

  • att tabellerna efterfrågas på samma antal kolumner;
  • begär att kolumnerna har samma namn;
  • att erforderliga kolumnerna i de två tabellerna har konsekvent datatyper;
Här är ett exempel: Låt säga att behöva arbeta på en databas av hypotetiska resebyrå och anta att våra DB bara innehåller två tabeller:
  • hotel_italia
    • namn
    • Stjärnor
    • stad
    • nation
  • hotel_europa
    • namn
    • Stjärnor
    • stad
    • nation
Antag nu att en kund vill att vi ska veta antingen erbjudanden om hotell i Italien och i Europa:





 SELECT namn, stjärnor, stad, land







 FRÅN hotel_italia







 UNION







 SELECT namn, stjärnor, stad, land







 FRÅN hotel_europa



Med denna fråga får vi en komplett lista över alla hotell i två tabeller:

namn Stjärnor stad nation
Hotel Cavour 4 Rom SV
Hotel Miramare 2 Katolska SV
Hotel Manzoni 2 Milan SV
Hotel Espana 3 Madrid ES
Hilton 5 London Storbritannien
Hotel am Schlossgarten 4 Stuttgart DE

Obs: Observera att unionen inte visar några dubbla poster (som standard fungerar som om den vore en SELECT DISTINCT ), och om du vill ha några dubbla poster visar också (tänker tillbaka till vårt exempel, på ett hotell i denna både i tabellen i den hotel_italia hotel_europa) kommer att behöva använda UNION ALL.

Sortera och begränsa resultat från UNIONEN

Antag att resultatet av att använda UNION och många vill att de ska begränsas till angivet nummer. Hur? Här är en lösning:

 



 SELECT * FROM







 (SELECT namn, stjärnor, stad, land från hotel_italia







 UNION







 SELECT namn, stjärnor, stad, land från hotel_europa)







 AS Hotel







 ORDER BY DESC LIMIT 10 stjärnor

 
I huvudsak behandlar vi de resultat som härrör från en förening av två eller fler tabeller som om de var resultatet av en enda tabell, genom att göra så att vi kan använda standard sortering och begränsa.

I samma kategori ...
E-Learning
MS Access (avancerat) MS Access (avancerat)
Lär dig skapa och hantera databaser snabbt och enkelt. Från 29 €.
MySQL (kurs) MySQL (kurs)
Hantering av öppen källkod databas. Från 39 €.
SQL och databas (kurs) SQL och databas (kurs)
Skapa och hantera relationsdatabaser. Från 39 €.
Sponsrade länkar