Tai yra vienas iš straipsnių apie „Access“ SQL rinkinių. Šiame straipsnyje aprašoma, kaip rašyti sąlygą FROM, ir pateikiama pavyzdžių, iliustruojančių įvairius sąlygos FROM naudojimo būdus.
Sakinyje SELECT nurodote sąlygoje FROM esančius duomenų šaltinius. Sąlygoje FROM taip pat gali būti JOIN operacija. Operacija JOIN atitinka ir sujungia duomenis iš dviejų duomenų šaltinių, pvz., dviejų lentelių, arba lentelės ir užklausos.
„Access SQL“ apžvalgoje žr. straipsnį „Access SQL“: pagrindinės sąvokos, žodynas ir sintaksė.
Šiame straipsnyje
Duomenų šaltinių nurodymas
Sakinyje SELECT sąlyga FROM nurodo lenteles arba užklausas, kuriose yra duomenų, kuriuos naudos sąlyga SELECT.
Tarkime, norite sužinoti konkretaus kliento telefono numerį. Tarkime, lentelė, kurioje yra laukas su saugomais duomenis, vadinama tblCustomer, sąlyga FROM būtų panaši į šią:
FROM tblCustomer
Laužtiniuose skliaustuose galite įrašyti pavadinimą. Jei pavadinime nėra tarpų arba specialiųjų simbolių (pvz., skyrybos ženklų), laužtiniai skliaustai yra pasirinktiniai. Jei pavadinime yra tarpų arba specialiųjų simbolių, turite naudoti skliaustus.
Patarimas: Pavadinimas, kuriame yra tarpų, yra lengviau skaitomas ir gali sutaupyti laiko kuriant formas ir ataskaitas, tačiau gali tekti įvesti daugiau teksto rašant SQL sakinius. Tai turite apsvarstyti, kai kuriate „Access“ duomenų bazės objektų pavadinimus.
Duomenų šaltinių pavadinimų pakaitų naudojimas
Galite naudoti kitą pavadinimą, kad nurodytumėte lentelę sakinyje SELECT naudodami lentelės pseudonimą sąlygoje FROM. Lentelės pseudonimas yra pavadinimas, kurį priskiriate užklausos duomenų šaltiniui, kai reiškinį naudojate kaip duomenų šaltinį arba kad SQL sakinį būtų lengviau įvesti ir skaityti. Tai gali būti ypač naudinga, jei duomenų šaltinio pavadinimas yra ilgas arba sunkiai įvedamas, ypač jei yra keli laukai, turintys tą patį pavadinimą iš skirtingų lentelių.
Pavyzdžiui, norint rinktis duomenis iš dviejų laukų, kurie abu pavadinti „ID“ ir kurių vienas yra gautas iš lentelės „tblCustomer“, o kitas – iš lentelės „tblOrder“, jūsų sąlyga SELECT gali atrodyti taip:
SELECT [tblCustomer].[ID], [tblOrder].[ID]
Naudojant lentelės pseudonimus sakinyje FROM, gali būti lengviau įvesti užklausą. Jūsų sąlyga FROM su lentelės pseudonimais gali atrodyti taip:
FROM [tblCustomer] AS [C], [tblOrder] AS [O]
Tada savo sąlygoje SELECT galėsite naudoti šiuos lentelių pseudonimus:
SELECT [C].[ID], [O].[ID]
Pastaba: Jei naudojate lentelės pseudonimus, SQL sakinyje esančią lentelę galite pavadinti naudodami pseudonimą arba visą lentelės pavadinimą.
Susijusių duomenų sujungimas
Jei užklausos rezultate įrašų iš dviejų duomenų šaltinių poras reikia sujungti į vieną įrašą, galite atlikti sujungimą. Sujungimas yra SQL operacija, kuri nurodo, kaip yra susiję du duomenų šaltiniai ir ar duomenis iš vieno šaltinio galima įtraukti, jei nėra atitinkamų duomenų iš kito šaltinio.
Norėdami sujungti informaciją dviejų duomenų šaltinių, galite atlikti sujungimo operaciją bendrame lauke. Kai šiame lauke saugomos reikšmės sutampa, rezultate duomenys iš įrašų yra sujungiami.
Be duomenų sujungimo, sujungimą taip pat galite naudoti norėdami nurodyti, ar įtraukti įrašus iš kurios nors lentelės, jei susijusioje lentelėje nėra atitinkamo įrašo, naudokite sujungimus.
Tarkime, užklausoje norite naudoti duomenis iš dviejų lentelių: tblCustomer ir tblOrder. Abiejose lentelėse yra laukas CustomerID, kuris identifikuoja klientą. Kiekvienas lentelės tblCustomer įrašas gali turėti vieną ar daugiau atitinkančių įrašų iš lentelės tblOrder, o atitinkančias reikšmes galima nustatyti pagal lauko CustomerID reikšmes.
Jei norite sujungti lenteles taip, kad užklausa sujungtų įrašus iš abiejų lentelių, išskyrus įrašus iš bet kurios lentelės, jei nėra atitinkamo įrašo kitoje lentelėje, jūsų sąlyga FROM gali atrodyti taip (eilutės lūžis pridedamas, kad būtų lengviau skaityti):
FROM [tblCustomer] INNER JOIN [tblOrder]
ON [tblCustomer].[CustomerID]=[tblOrder].[CustomerID]
Programoje „Access“ sujungimai atsiranda sakinio SELECT sąlygoje FROM. Yra dviejų tipų sujungimai: vidiniai ir išoriniai sujungimai. Tolesniuose skyriuose paaiškinami šių dviejų tipų sujungimai.
Vidiniai sujungimai
Tai dažniausiai pasitaikantis sujungimų tipas. Paleidus užklausą su vidiniu sujungimu, į užklausos rezultatus įtraukiami tik įrašai, kurių bendra reikšmė yra abiejose sujungtose lentelėse.
Vidinio sujungimo sintaksė yra tokia (eilutės lūžis pridedamas, kad būtų lengviau skaityti):
FROM table1 INNER JOIN table2
ON table1.field1 compopr table2.field2
Šioje lentelėje aprašomos įvairios operacijos INNER JOIN dalys.
Dalis |
Aprašas |
lentelė1, lentelė2 |
Lentelių, kurių įrašai suderinti, pavadinimai. |
laukas1, laukas2 |
Sujungiamų laukų pavadinimai. Jei jie nėra skaičius, laukai turi būti to paties duomenų tipas ir turėti vienodos rūšies duomenis, bet jų pavadinimas negali būti toks pat. |
lyginimo_operatorius |
Bet kuris santykinis lyginimo operatorius: „=“, „<“, „>“, „<=“, „>=“ arba „<>“. |
Išoriniai sujungimai
Išorinis sujungimas yra panašus į vidinį sujungimą, nes jie nurodo užklausai, kaip sujungti informaciją iš dviejų šaltinių. Jie skiriasi, nes išorinis sujungimas taip pat nurodo, ar norite įtraukti duomenis ten, kur nėra bendros reikšmės. Išoriniai sujungimai yra kryptiniai: galite nurodyti, ar įtraukti visus įrašus iš pirmojo duomenų šaltinio, nurodyto sujungime (vadinamame kairiu sujungimu), ar įtraukti visus įrašus iš antrojo duomenų šaltinio, nurodyto sujungime (vadinamame dešiniu sujungimu).
Išorinio sujungimo sintaksė yra tokia:
FROM lentelė1 [ LEFT | RIGHT ] JOIN lentelė2
ON lentelė1.laukas1lyginimo_operatorius lentelė2.laukas2Šioje lentelėje aprašomos įvairios operacijų LEFT JOIN ir RIGHT JOIN dalys.
Dalis |
Aprašas |
lentelė1, lentelė2 |
Lentelių, kurių įrašai suderinti, pavadinimai. |
laukas1, laukas2 |
Sujungiamų laukų pavadinimai. Laukai turi būti to paties duomenų tipas ir turėti vienodos rūšies duomenis, bet jie neprivalo turėti to paties pavadinimo. |
lyginimo_operatorius |
Bet kuris santykinis lyginimo operatorius: „=“, „<“, „>“, „<=“, „>=“ arba „<>“. |
Daugiau informacijos apie sujungimus ieškokite straipsnyje Lentelių ir užklausų sujungimas.