SQL Academy · Oppitunti

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).

Oppitunti 4/413 vaihetta

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ä?

Aloita maksutta

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

  1. Miksi liitoksia käytetään (relaatiomallin kertaus)
  2. INNER JOIN -liitoksen toimintaperiaate
  3. LEFT/RIGHT JOIN ja OUTER-liitokset
  4. Itseliitokset ja aliakset
← Takaisin: SQL Academy