See on üks mitmest Access SQL-i käsitlevast artiklist. Artiklis kirjeldatakse, kuidas kirjutada FROM-klauslit, ning tuuakse näiteid, et illustreerida erinevaid tehnikaid, mida saab FROM-klausli juures kasutada.
SELECT-klauslis määrate FROM-klausli andmeallikad. FROM-klausel võib sisaldad ka JOIN-toimingut. JOIN-toimingu abil saate vastendada ja kombineerida kahest andmeallikast (nt kaks tabelit või tabel ja päring) pärit andmeid.
Access SQL-i ülevaate leiate artiklist Accessi SQL: põhimõtted, sõnavara ja süntaks.
Selle artikli teemad
Andmeallikate määramine
SELECT-klauslis määrab FROM-klausel tabelid või päringud, mis sisaldavad neid andmeid, mida SELECT-klausel kasutab.
Oletagem, et soovite teada kindla kliendi telefoninumbrit. Kui seda teavet sisaldava väljaga tabeli nimi on tblCustomer, on FROM-klausel selline:
FROM tblCustomer
Nime saate ümbritseda nurksulgudega. Kui nimes pole ühtegi tühikut ega erimärki (nt kirjavahemärki), on nurksulgude kasutamine valikuline. Kui nimes on mõni tühik või erimärk, tuleb nurksulge kasutada.
Näpunäide.: Tühikuid sisaldavat nime on hõlpsam lugeda ning see aitab vormide ja aruannete loomisel aega kokku hoida, ent SQL-lausete kirjutamisel võib selle tõttu olla vaja rohkem teksti sisestada. Kui panete objektidele Accessi andmebaasis nimesid, peaksite sellega arvestama.
Andmeallikate asendusnimede kasutamine
SELECT-lause tabelile viitamiseks saate kasutada mõnda muud nime, kasutades FROM-klauslis tabeli pseudonüümi. Tabeli pseudonüüm on nimi, mille määrate päringu andmeallikale, kui kasutate avaldist andmeallikana või muudate SQL-lause tippimise ja lugemise lihtsamaks. See võib olla eriti kasulik juhul, kui andmeallika nimi on pikk või seda on raske tippida, eriti kui erinevatest tabelitest on mitu sama nimega välja.
Kui soovite näiteks valida andmed kahelt väljalt (mõlema nimi on ID), millest üks on pärit tabelist tblCustomer ja teine tabelist tblOrder, võib teie SELECT-klausel välja näha selline:
SELECT [tblCustomer].[ID], [tblOrder].[ID]
Kui kasutate FROM-klauslis tabelipseudonüüme, on päringu sisestamine lihtsam. Teie FROM-klausel võib koos tabelipseudonüümidega välja näha selline:
FROM [tblCustomer] AS [C], [tblOrder] AS [O]
Seejärel saate kasutada neid tabelipseudonüüme oma SELECT-klauslis järgmiselt:
SELECT [C].[ID], [O].[ID]
Märkus.: Kui kasutate tabelipseudonüüme, saate SQL-lauses viidata tabelile pseudonüümi või tabeli täisnime abil.
Seotud andmete ühendamine
Kui peate kahest andmeallikast pärit kirjete paari kombineerima päringutulemis üheks kirjeks, saate seda teha ühendamise teel. Ühendamine on SQL-toiming, mis määrab, kuidas on kaks andmeallikat omavahel seotud ja kas ühest andmeallikast pärit andmed tuleks kaasata, kui sellel pole teisest andmeallikast pärit vastavaid andmeid.
Kahest andmeallikast pärit teabe kombineerimiseks teete ühendamise väljal, mis on neil kahel andmeallikal ühine. Kui sellel väljal talletatavad väärtused kattuvad, kombineeritakse tulemustes kirjetest pärit andmed.
Lisaks andmete kombineerimisele saate ühendamise abil määrata, kummast tabelist pärit kirjed soovite kaasata, kui seotud tabelis pole vastavat kirjet.
Oletagem näiteks, et soovite päringus kasutada kahest tabelist pärit andmeid: tblCustomer ja tblOrder. Kummaski tabelis on väli CustomerID, mis tähistab klienti. Igal tabelis tblCustomer oleval kirjel võib tabelis tblOrder olla üks või mitu vastavat kirjet ja vastavad väärtused saab määratleda väärtustega väljal CustomerID.
Kui soovite tabelid ühendada, et päring kombineeriks tabelitest pärit kirjed, välja arvatud kummagi tabeli kirjed juhul, kui teises tabelis pole vastavat kirjet, võib teie FROM-klausel välja näha selline (reapiir on siia lisatud lugemise hõlbustamiseks):
FROM [tblCustomer] INNER JOIN [tblOrder]
ON [tblCustomer].[CustomerID]=[tblOrder].[CustomerID]
Accessis toimub ühendamine SELECT-lause FROM-klauslis. Ühendamisi on kaht tüüpi: sisemised ja välised ühendamised. Järgmistes lõikudes kirjeldatakse kaht tüüpi ühendamisi.
Sisemised ühendamised
Sisemised ühendamised on kõige levinumat tüüpi ühendamised. Sisemise ühendamisega päringu käitamise korral kaasatakse päringutulemitesse ainult need kirjed, millel on mõlemas ühendatud tabelis ühine väärtus.
Sisemisel ühendamisel on järgmine süntaks (reapiir on lisatud ainult lugemise hõlbustamiseks):
FROM table1 INNER JOIN table2
ON table1.field1 compopr table2.field2
Järgmises tabelis kirjeldatakse toimingu INNER JOIN erinevaid osi.
Osa |
Kirjeldus |
tabel1, tabel2 |
Nende tabelite nimed, mille kirjed liidetakse. |
väli1, väli2 |
Ühendatavate väljade nimed. Kui need pole numbriväljad, peab väljadel olema sama andmetüüp ja need peavad sisaldama sarnaseid andmeid, kuid neil ei pea olema sama nimi. |
võrdlusmärk |
Suvaline relatsiooniline võrdlusmärk: "=", "<", ">", "<=", ">=" või "<>". |
Välised ühendamised
Välised ühendamised sarnanevad sisemiste ühendamistega, andes päringule teada, kuidas kombineerida kahest allikast pärit andmeid. Erinevus seisneb selles, et need määravad ka selle, kas lisaks tuleb kaasata andmed, kus pole ühist väärtust. Välised ühendamised on suunatavad: saate määrata, kas soovite kaasata kõik kirjed esimesest ühenduses määratud andmeallikast (vasakpoolne ühendamine) või kaasata kõik kirjed teisest ühenduses olevast andmeallikast (parempoolne ühendamine).
Välise ühendamise süntaks on järgmine:
FROM tabel1 [ LEFT | RIGHT ] JOIN tabel2
ON tabel1.väli1võrdlusmärk tabel2.väli2Järgmises tabelis kirjeldatakse toimingute LEFT JOIN ja RIGHT JOIN erinevaid osi.
Osa |
Kirjeldus |
tabel1, tabel2 |
Nende tabelite nimed, mille kirjed liidetakse. |
väli1, väli2 |
Ühendatavate väljade nimed. Väljadel peab olema sama andmetüüp ja need peavad sisaldama sarnaseid andmeid, kuid neil ei pea olema sama nimi. |
võrdlusmärk |
Suvaline relatsiooniline võrdlusmärk: "=", "<", ">", "<=", ">=" või "<>". |
Lisateavet ühendamiste kohta leiate artiklist Tabelite ja päringute ühendamine.