Praegu on meil olemas kaks eraldi tabelit. Laste loetelu ning lemmikloomade loetelu, iga lemmiklooma juures on kirjas lapse id, kelle ülesandeks on vastava looma eest hoolt kanda. Soovides teada, kelle oma on Miisu, tuleb “käsitsi” uurides minna kõigepealt lemmikloomade tabelisse, otsida sealt üles Miisu peremehe_id ning siis minna selle arvu järgi laste tabelist peremehe nime ja muid andmeid otsima. Et selline tabelite ühendamine aga on andmebaaside juures sage ja hädavajalik, siis on ühendamise jaoks loodud omad käsklused.
Järgnevalt ühendatakse laste andmetabeli külge lemmikloomade andmetabel, kusjuures ridade kõrvutamise tingimuseks on, et lapse id-number ning lemmiklooma peremehe_id-number oleksid võrdsed. Tärn SELECT´i järel teatab, et näidataks kõiki võimalikke veerge. Ridadest on praeguse päringu puhul nähtavad ainult need lapsed, kel lemmikloom olemas. Ja kui mõnel lapsel oleks mitu lemmiklooma, siis näidataks ka selle lapse andmed mitmekordselt. Mitmekordsest näitamisest hoolimata talletatakse aga selle lapse andmeid baasis ikkagi ühekordselt. Nii et kui kellegi pikkus peaks muutuma, siis piisab selle märkimisest ühes kohas.
SELECT * FROM lapsed
INNER JOIN lemmikloomad
ON lemmikloomad.peremehe_id=lapsed.id
INNER JOINi nimeline süntaks on levinud SQL Serveris. Sama toimingu kirjapanekuks aga on ka teine viis, mis töötab nii siin kui teiste SQL standardit arvestavate andmebaaside peal. FROM-sõna järgi kirjutatakse kõikide osalevate tabelite loetelu ning WHERE-tingimusega seatakse, millised read peavad omavahel võrdsed olema. Nagu näha, on tulemus eelmise päringuga võrreldes samasugune.
SELECT * FROM lapsed, lemmikloomad
WHERE lemmikloomad.peremehe_id=lapsed.id
Tabeleid ühendades saab lihtsalt mitmest tabelist kokku ühe. Muud tingimused ja järjestamised käivad ikka samamoodi. Ehk siis, kui tahta panna andmed peremeeste nimede järgi tähestikulisse järjekorda, siis aitab endiselt ORDER BY eesnimi.
SELECT * FROM lapsed, lemmikloomad
WHERE lemmikloomad.peremehe_id=lapsed.id
ORDER BY eesnimi
Tabelite järjekord päringus määrab ka nende järjekorra trükitavas vastuses. Kui andmete poole pöördutakse tulba nime järgi, pole sel erilist vahet. Kui aga kasutatakse tulba järjekorraumbrit, siis peab teadma, mitmendana milline tulp kus asetseb. Siin siis lemmikloomad ees ja lapsed järgi.
SELECT * FROM lemmikloomad
INNER JOIN lapsed
ON lemmikloomad.peremehe_id=lapsed.id
Tahtes näha vaid osa tulpasid kõigi asemel, tuleb nende tulpade nimed ette lugeda. Ikka sarnaselt nagu ühestki tabelist tehtavate päringute korral.
SELECT eesnimi, loomanimi FROM lemmikloomad
INNER JOIN lapsed
ON lemmikloomad.peremehe_id=lapsed.id
Siiri Miisu
Siim Pauka
Et INNER JOIN on SQL Serveri jaoks vaikimisi ühendusviis, võib sõna INNER ära jätta – päring töötab ikka samamoodi.
SELECT eesnimi, loomanimi FROM lemmikloomad
JOIN lapsed ON lemmikloomad.peremehe_id=lapsed.id
Siiri Miisu
Siim Pauka