Itseliitokset ja aliakset
Liittäkää taulu itseensä aliaksia käyttäen ja verratkaa saman taulun rivejä (työntekijät ja esihenkilöt, päivämäärät ja edelliset päivämäärät).
Itseliitokset ja aliakset on ilmainen SQL Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu SQL Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. SQL Academy-kurssilla on yhteensä 4 oppituntia.
Itseviittaus: taulun liittäminen itseensä
Joskus suhde sijaitsee yhden taulun sisällä:
- Työntekijät ↔ esihenkilöt (esihenkilö on työntekijä)
- Säikeistetyt kommentit (jokaisella kommentilla on parent_id)
- Ystäväverkosto (käyttäjä ↔ käyttäjä)
Asetukset
employees-taulu, jossa on itseensä viittaava vierasavain:
CREATE TABLE employees (
id BIGSERIAL PRIMARY KEY,
full_name TEXT NOT NULL,
manager_id BIGINT REFERENCES employees(id)
);Työntekijöiden liittäminen heidän esihenkilöihinsä
Antakaa kullekin esiintymälle eri alias:
SELECT e.full_name AS employee, m.full_name AS manager
FROM employees e
JOIN employees m ON m.id = e.manager_id;Ilman aliaksia kysely ei kääntyisi
Ilman aliaksia ette voi tietää, kumpaa full_name-saraketta tarkoitatte. Jokainen viittaus on epäselvä:
-- ERROR: column reference "full_name" is ambiguous
SELECT full_name FROM employees JOIN employees ON ...LEFT JOIN ylimmän tason työntekijöille
INNER JOIN jättää pois työntekijät, joilla ei ole esihenkilöä (kuten toimitusjohtajan). Käyttäkää LEFT JOIN -liitosta, jotta he säilyvät:
SELECT e.full_name AS employee, m.full_name AS manager
FROM employees e
LEFT JOIN employees m ON m.id = e.manager_id;Säikeistetyt kommentit
Näyttäkää jokainen kommentti emokommenttinsa tekstin kanssa:
SELECT c.id, c.body, p.body AS parent_body
FROM comments c
LEFT JOIN comments p ON p.id = c.parent_id;Parit ja yhdistelmät
Etsikää samassa tilauksessa esiintyneet tuotepasr (ilman toisistaan poikkeavia pareja (A,B) ja (B,A)):
SELECT a.id AS product_a, b.id AS product_b
FROM order_items a
JOIN order_items b
ON a.order_id = b.order_id
AND a.product_id < b.product_id;Peräkkäisten rivien vertaaminen
Tehkää itseviittaus rivin "edelliseen" versioon:
SELECT a.id, a.created_at, b.created_at AS prev_at
FROM events a
LEFT JOIN events b ON b.id = a.previous_id;Itseviittaus ja ikkunafunktio
Monissa tehtävissä, joissa jokaista riviä verrataan edelliseen, ikkunafunktio (LAG) on yksinkertaisempi ja nopeampi kuin itseviittaus. Aihetta käsitellään oppitunnilla Window Functions Deep Dive.
Rekursiiviset itseviittaukset
Tarvitsetteko kulkea N tasoa syvälle, esimerkiksi organisaatiokaaviossa tai viestiketjupuussa? Käyttäkää rekursiivista CTE:tä — aihetta käsitellään oppitunnilla Subqueries and CTEs.
Vierasavainsarakkeen indeksointi
Lisätkää aina indeksi itseensä viittaavaan vierasavainsarakkeeseen. Ilman sitä liitos käy koko taulun läpi jokaisella emorivin haulla.
CREATE INDEX employees_manager_idx ON employees(manager_id);Kertaus
Itseliitokset käsittelevät yhden taulun sisäisiä suhteita.
- Kaksi aliasta kahdelle virtuaaliselle kopiolle
- LEFT JOIN juurisolmujen / ylätason rivien säilyttämiseen
- Indeksoi FK-sarake
- Ikkunafunktiot voivat yksinkertaistaa ”edellinen rivi” -malleja
Pikatesti
Liität employees-taulun itseensä löytääksesi jokaisen työntekijän esihenkilön. Miksi aliakset ovat välttämättömiä?
Opi SQL tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 46
- Oppitunnit
- 183
Usein kysytyt kysymykset
Onko oppitunti ”Itseliitokset ja aliakset” ilmainen?
Kyllä – oppitunnin ”Itseliitokset ja aliakset” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko SQL Academy-kurssin, päivitä CoddyKit PROhon. SQL Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Itseliitokset ja aliakset”?
Liittäkää taulu itseensä aliaksia käyttäen ja verratkaa saman taulun rivejä (työntekijät ja esihenkilöt, päivämäärät ja edelliset päivämäärät). Harjoittelet SQL Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni SQL Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin SQL Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.
Kuinka kauan ”Itseliitokset ja aliakset”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä SQL Academy-oppitunnilla?
Kyllä. Jokainen SQL Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Miksi liitoksia käytetään (relaatiomallin kertaus)
- INNER JOIN -liitoksen toimintaperiaate
- LEFT/RIGHT JOIN ja OUTER-liitokset
- Itseliitokset ja aliakset