..


Sponsede Lenker

Bruk UNION å kombinere resultatene av to tabeller

Artikkel skrevet av Max Bossi

SQL-språk gir oss en ganske enkel måte å kombinere innenfor samme SELECT-setningen, resultatene av to ulike tabeller.

For å oppnå dette, er det på tide å bruke UNION all'opertore som vil, faktisk, unionen av resultatene oppnådd ved å spørre de to tabellene.

Merk at for å bli brukt riktig, er det på tide at UNION operatør:

  • at tabellene er spørres på samme antall kolonner;
  • ber om at søylene har samme navn;
  • at de nødvendige kolonner i de to tabellene har konsistente data typer;
La oss ta et eksempel: la oss si av å måtte operere på en database over hypotetisk reisebyrå og anta at vår DB inneholder kun to tabeller:
  • hotel_italia
    • navn
    • stjerner
    • by
    • nasjon
  • hotel_europa
    • navn
    • stjerner
    • by
    • nasjon
Nå anta at en kunde ønsker vi å vite enten tilbud om hotell i Italia og i Europa:





 SELECT navn, stjerner, poststed, land







 FRA hotel_italia







 UNION







 SELECT navn, stjerner, poststed, land







 FRA hotel_europa



Med denne spørringen får vi en komplett liste over alle hoteller i de to tabellene:

navn stjerner by nasjon
Hotel Cavour 4 Roma EN
Hotel Miramare 2 Katolske EN
Hotel Manzoni 2 Milan EN
Hotel Espana 3 Madrid ES
Hilton 5 London Storbritannia
Hotel am Schlossgarten 4 Stuttgart DE

Merk: Vær oppmerksom på at UNION operatøren ikke viser like poster (som standard opererer som om det var en SELECT DISTINCT ), og hvis du ønsker noen like poster viser også (tenker tilbake til vårt eksempel, på et hotell i denne både i tabellen i at hotel_italia hotel_europa) må bruke UNION ALL.

Sortere og begrense resultatene som følge av UNION

Anta at resultatene fra bruk av UNION og mange vil ha dem til å være begrenset til angitt antall. How do? Her er en løsning:

 



 SELECT * FROM







 (SELECT navn, stjerner, poststed, land FRA hotel_italia







 UNION







 SELECT navn, stjerner, poststed, land FRA hotel_europa)







 AS Hotel







 ORDER BY DESC LIMIT 10 stjerner

 
I hovedsak behandler vi resultatene som følge av unionen av to eller flere tabeller som om de var resultatet av en enkelt tabell, dermed kan vi bruke sortering og normal grense.

I samme kategori ...
E-læring
MS Access (avansert) MS Access (avansert)
Lær å opprette og administrere databaser raskt og enkelt. Starter fra 29 €.
MySQL (Course) MySQL (Course)
Forvaltning av open-source database. Starter fra 39 €.
SQL og Database (Course) SQL og Database (Course)
Opprette og administrere relasjonsdatabaser. Starter fra 39 €.
Sponsede Lenker