Union-lauseke
Olemme herättäneet asiakkaan huomion, joka tarvitsee SQL-kyselyitä. Ennen kuin siirrymme JOINs-lauseisiin, tutustutaan UNION-lauseeseen, joka on olennainen useiden taulukoiden yhdistämisessä.
Tässä on tärkeitä asioita, jotka tulee tietää käytettäessä UNION-lausetta:
-
Sarakkeiden määrä ja järjestys: Kaikissa kyselyissä, jotka yhdistetään
UNION-lauseella, tulee olla sama määrä sarakkeita samassa järjestyksessä; -
Tietotyypit: Jokaisen kyselyn sarakkeiden tulee olla yhteensopivia tietotyypeiltään;
-
Uniikit rivit: Oletuksena
UNIONpoistaa päällekkäiset rivit. KäytäUNION ALL, jos haluat säilyttää duplikaatit.
Jotta ymmärtäisit paremmin kuinka taulukoita yhdistetään oikein UNION-lauseella, olen lisännyt lisätaulukon, joka sisältää tietoja contractors-taulukosta.
Tietoja on vähän: vain first_name, last_name ja email.
Tämä taulu muistuttaa employees-taulua. Käyttämällä UNION-lausetta voimme yhdistää nämä kaksi taulua ja esimerkiksi tarkastella listaa kaikista yrityksen työntekijöistä ja alihankkijoista etu- ja sukunimineen.
Tämän toteuttamiseksi käytämme UNION-lausetta:
12345678(SELECT employee_id as id, first_name, last_name FROM employees) UNION (SELECT contractor_id as id, first_name, last_name FROM contractors) ORDER BY id
Käydään läpi, mitä tässä tapahtuu:
Meillä on kaksi kyselyä, jotka molemmat palauttavat kolme saraketta samoilla tietotyypeillä. Haluamme nähdä kaikkien yrityksen henkilöiden Id, first_name ja last_name. Nimeämme myös Id-sarakkeen uudelleen, jotta molemmissa kyselyissä on samannimiset sarakkeet.
Sen jälkeen käytämme UNION-lausetta yhdistääksemme kyselyiden tulokset, jolloin kaksoiskappaleet poistetaan (tässä tapauksessa niitä ei ole).
Lopuksi järjestämme tulokset Id-sarakkeen mukaan käyttämällä ORDER BY -lausetta.
Huomio
Järjestämme tulokset
Id-sarakkeen mukaan, joka on molemmille tauluille yhteinen sarake.
UNION-lauseen käytön jälkeen saamme "yhden suuren kyselyn", jota voidaan edelleen käsitellä esimerkiksi ORDER BY -lauseella.
Emme voi käyttää suoraan WHERE- tai GROUP BY -lauseita tauluissa, jotka on yhdistetty UNION-operaattorilla. Näiden lauseiden käyttämiseksi täytyy hyödyntää alikyselyä FROM-osiossa. Tässä esimerkki siitä, miten tämä tehdään:
123456789SELECT id, first_name, last_name FROM ( SELECT employee_id AS id, first_name, last_name FROM employees UNION SELECT contractor_id AS id, first_name, last_name FROM contractors ) AS combined WHERE first_name = 'Jane'
Alikyselyn käyttäminen FROM-osiossa tarjoaa enemmän joustavuutta! Tämä voi aluksi tuntua haastavalta, mutta tämän hallitseminen helpottaa monimutkaisten kyselyiden kirjoittamista huomattavasti.
1. Mitkä sarakkeet vaaditaan käytettäessä UNION-lausetta SQL:ssä?
2. Miten UNION-lause käsittelee oletuksena päällekkäiset rivit?
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Mahtavaa!
Completion arvosana parantunut arvoon 4
Union-lauseke
Pyyhkäise näyttääksesi valikon
Olemme herättäneet asiakkaan huomion, joka tarvitsee SQL-kyselyitä. Ennen kuin siirrymme JOINs-lauseisiin, tutustutaan UNION-lauseeseen, joka on olennainen useiden taulukoiden yhdistämisessä.
Tässä on tärkeitä asioita, jotka tulee tietää käytettäessä UNION-lausetta:
-
Sarakkeiden määrä ja järjestys: Kaikissa kyselyissä, jotka yhdistetään
UNION-lauseella, tulee olla sama määrä sarakkeita samassa järjestyksessä; -
Tietotyypit: Jokaisen kyselyn sarakkeiden tulee olla yhteensopivia tietotyypeiltään;
-
Uniikit rivit: Oletuksena
UNIONpoistaa päällekkäiset rivit. KäytäUNION ALL, jos haluat säilyttää duplikaatit.
Jotta ymmärtäisit paremmin kuinka taulukoita yhdistetään oikein UNION-lauseella, olen lisännyt lisätaulukon, joka sisältää tietoja contractors-taulukosta.
Tietoja on vähän: vain first_name, last_name ja email.
Tämä taulu muistuttaa employees-taulua. Käyttämällä UNION-lausetta voimme yhdistää nämä kaksi taulua ja esimerkiksi tarkastella listaa kaikista yrityksen työntekijöistä ja alihankkijoista etu- ja sukunimineen.
Tämän toteuttamiseksi käytämme UNION-lausetta:
12345678(SELECT employee_id as id, first_name, last_name FROM employees) UNION (SELECT contractor_id as id, first_name, last_name FROM contractors) ORDER BY id
Käydään läpi, mitä tässä tapahtuu:
Meillä on kaksi kyselyä, jotka molemmat palauttavat kolme saraketta samoilla tietotyypeillä. Haluamme nähdä kaikkien yrityksen henkilöiden Id, first_name ja last_name. Nimeämme myös Id-sarakkeen uudelleen, jotta molemmissa kyselyissä on samannimiset sarakkeet.
Sen jälkeen käytämme UNION-lausetta yhdistääksemme kyselyiden tulokset, jolloin kaksoiskappaleet poistetaan (tässä tapauksessa niitä ei ole).
Lopuksi järjestämme tulokset Id-sarakkeen mukaan käyttämällä ORDER BY -lausetta.
Huomio
Järjestämme tulokset
Id-sarakkeen mukaan, joka on molemmille tauluille yhteinen sarake.
UNION-lauseen käytön jälkeen saamme "yhden suuren kyselyn", jota voidaan edelleen käsitellä esimerkiksi ORDER BY -lauseella.
Emme voi käyttää suoraan WHERE- tai GROUP BY -lauseita tauluissa, jotka on yhdistetty UNION-operaattorilla. Näiden lauseiden käyttämiseksi täytyy hyödyntää alikyselyä FROM-osiossa. Tässä esimerkki siitä, miten tämä tehdään:
123456789SELECT id, first_name, last_name FROM ( SELECT employee_id AS id, first_name, last_name FROM employees UNION SELECT contractor_id AS id, first_name, last_name FROM contractors ) AS combined WHERE first_name = 'Jane'
Alikyselyn käyttäminen FROM-osiossa tarjoaa enemmän joustavuutta! Tämä voi aluksi tuntua haastavalta, mutta tämän hallitseminen helpottaa monimutkaisten kyselyiden kirjoittamista huomattavasti.
1. Mitkä sarakkeet vaaditaan käytettäessä UNION-lausetta SQL:ssä?
2. Miten UNION-lause käsittelee oletuksena päällekkäiset rivit?
Kiitos palautteestasi!