Ja Access vaicājumā iekļaujat vairākus datu avotus, jūs izmantojat savienojumus, lai ierobežotu ierakstus, kurus vēlaties redzēt, pamatojoties uz datu avotu savstarpējo saistību. Savienojumus izmanto arī, lai apvienotu ierakstus no abiem datu avotiem tā, ka katrs ierakstu pāris no avotiem vaicājuma rezultātos kļūst par vienu ierakstu.
Šajā rakstā aplūkoti dažādi savienojumu tipi un parādīts, kā tos izmantot vaicājumā. Pēc noklusējuma savienojums tiek izveidots automātiski, ja starp diviem vaicājumā izmantotajiem datu avotiem jau pastāv relācija. Savienojums tiek izveidots arī tad, ja ir lauki, kas skaidri atbilst viens otram. Automātiski izveidotu savienojumu varat izdzēst. Šajā rakstā sniegta pamatinformācija par tabulu relācijām, tostarp par to, kā tās izveidot.
Piezīme
Vaicājumus var apvienot tāpat, kā savienojat tabulas, kā arī varat savienot abus.
Tēmas šajā rakstā
- Pārskats
- Savienojumu tipi
- Rindu, kurās ir kopīga vērtība abās savienotajās tabulās, rādīšana
- Rādīt visas rindas no vienas tabulas un atbilstošās rindas no otras tabulas
- Rādīt visas rindas no abām tabulām un savienot tās, ja pastāv kopīga vērtība
- Šķērssavienojumi
- Tabulu savienošana, pamatojoties uz lauku vērtību nevienlīdzību
- Savienojuma dzēšana
Pārskats
Datu bāze ir tādu datu tabulu kolekcija, kurām ir loģiskas relācijas. Relācijas izmanto, lai savienotu tabulas pēc laukiem, kas tām ir kopīgi. Tabula var būt daļa no jebkāda relāciju daudzuma, bet katrai relācijai vienmēr ir tieši divas tabulas. Vaicājumā relācija tiek attēlota ar savienojumu.
Pievienojot tabulas vaicājumam, programma Access izveido savienojumus, kuru pamatā ir starp tabulām definētās relācijas. Varat manuāli izveidot savienojumus vaicājumos, pat ja tie neatspoguļo jau definētas relācijas. Ja kā vaicājuma datu avotus izmantojat citus vaicājumus (tabulu vietā vai papildus tām), var izveidot savienojumus starp avota vaicājumiem, kā arī starp šiem vaicājumiem un jebkuru tabulu, ko izmantojat kā datu avotu.
Savienojumi darbojas līdzīgi vaicājuma kritērijiem, jo tie izveido kārtulas, kurām datiem jāatbilst, lai tos iekļautu vaicājuma operācijās. Atšķirībā no kritērijiem, savienojumi arī norāda, ka katrs rindu pāris, kas atbilst savienojuma nosacījumiem, tiks apvienots ierakstkopā, lai izveidotu vienu rindu.
Pastāv četri savienojumu pamattipi: iekšējie, ārējie, krusteniskie savienojumi un nevienlīdzīgi savienojumi. Šajā rakstā ir aplūkoti visi savienojuma veidi, ko varat izmantot, kāpēc tiek izmantoti katrs veids un kā izveidot savienojumus.
Savienojumi nozīmē vaicājumus un relācijas tabulām: norāde par to, kā var apvienot datus divos avotos, pamatojoties uz tiem kopīgām datu vērtībām. Tālāk ir parādīts savienojuma attēls vaicājuma noformējuma skatā, kur dialoglodziņā ir atvērti savienojuma rekvizīti:
Šī līnija starp tabulām apzīmē savienojumu. Veiciet dubultklikšķi uz savienojuma, lai atvērtu dialoglodziņu Savienojuma rekvizīti (attēlā) un pārskatītu vai mainītu savienojumu.
Savienojumi dažkārt ir atkarīgi no virziena. Šajā dialoglodziņa apgabalā ir redzams, kura tabula ir kura savienojumā un kuri lauki tiek izmantoti tabulu savienošanai.
Šis apgabals nosaka savienojuma tipu: 1. opcija ir iekšējais savienojums, 2. variants ir kreisais ārējais savienojums un 3 ir labais ārējais savienojums.
Var izmantot abu tabulu laukus, un no katras tabulas tiek parādīti ar attiecīgo uzdevumu saistītie dati. Iekšējā savienojumā citi dati netiek iekļauti. Ārējā savienojumā vaicājumu rezultātos tiek iekļauti arī nesaistīti ieraksti no vienas tabulas.
Savienojumu tipi
Pastāv četri savienojumu pamattipi: iekšējie, ārējie, krusteniskie savienojumi un nevienlīdzīgi savienojumi. Šķērssavienojumi un nevienādi savienojumi ir papildu savienojumu tipi, un tie tiek izmantoti reti, taču tie ir jāzina, lai pilnībā izprastu, kā savienojumi darbojas.
Iekšējie savienojumi: tikai saistītie dati no abām tabulām kopā
Iekšējais savienojums ir tāds, kurā programma Access iekļauj datus no tabulas tikai tad, ja saistītajā tabulā ir atbilstoši dati, un otrādi. Lielākoties tiks izmantoti iekšējie savienojumi. Kad izveidojat savienojumu un nenorādāt, kāda veida savienojums tas ir, Access pieņem, ka vēlaties iekšējo savienojumu. Iekšējie savienojumi ir noderīgi, jo tie ļauj apvienot datus no diviem avotiem, pamatojoties uz kopīgām vērtībām, tāpēc dati tiek rādīti tikai tad, ja ir pilnīgs attēls.
Ārējie savienojumi: visi saistītie dati pareizi apvienoti, kā arī visi atlikušie ieraksti no vienas tabulas
Ārējais savienojums ir kā iekšējais savienojums, bet pievieno atlikušās rindas no vienas tabulas. Ārējie savienojumi sniedz norādes: kreisais ārējais savienojums ietver visus ierakstus no kreisās tabulas (pirmā tabula savienojumā), bet labais ārējais savienojums ietver visus ierakstus no labās tabulas (otrā savienojuma tabula).
Pilni ārējie savienojumi: visi dati, apvienoti, ja iespējams
Dažās sistēmās ārējā saistīšana var ietvert visas rindas no abām tabulām, rindas sakrīt, ja tās atbilst. To sauc par pilnu ārējo savienojumu, un programma Access to tieši neatbalsta. Tomēr varat izmantot šķērssavienojumu un kritērijus, lai panāktu to pašu efektu.
Cross joins: all the data, combined all possible ways
Pārsvarā šķērseniskā saistīšana ir blakusefekts, kad vaicājumam tiek pievienotas divas tabulas un pēc tam aizmirstama tās pievienot. Access interpretē to kā tādu, ka vēlaties redzēt katru ierakstu no vienas tabulas kopā ar katru ierakstu no otras tabulas — visas iespējamās ierakstu kombinācijas. Tā kā nav iespējams apvienot nekādus datus, šāda veida savienošana reti dod lietderīgus rezultātus. Taču ir daži gadījumi, kad šķērssavienojums ir tieši tas, kas nepieciešams.
Nevienlīdzīgi savienojumi: kā parasts savienojums, bet rindu apvienošanai tiek izmantots cits salīdzinājums
Nevienādu vērtību savienojumi izmanto citu operatoru, nevis vienādības zīmi (=), lai salīdzinātu vērtības un noteiktu, vai un kā apvienot datus. Nevienlīdzīgi savienojumi netiek tieši atbalstīti, bet varat izmantot šķērssavienojumus un kritērijus, lai panāktu to pašu efektu.
Rindu, kurās ir kopīga vērtība abās savienotajās tabulās, rādīšana
Ja vēlaties rādīt tikai tās rindas, kurām ir sakrītošas vērtības saistītajā laukā, izmantojiet iekšējo savienojumu. Programma Access automātiski izveido iekšējos savienojumus.
Iekšējais savienojums ir izplatītākais savienojumu tips. Tās norāda vaicājumam, ka rindas no vienas savienotās tabulas atbilst otras tabulas rindām, pamatojoties uz datiem savienotajos laukos. Izpildot vaicājumu ar iekšējo savienojumu, vaicājuma operācijās tiek iekļautas tikai tās rindas, kurām pastāv kopīga vērtība abās savienotajās tabulās.
Kā izmantot iekšējo savienojumu?
Lielākoties nav jāveic nekādas darbības, lai izmantotu iekšējo savienojumu. Ja tabulām, kuras pievienojat vaicājumam, jau ir relācijas, Access automātiski izveido iekšējo savienojumu starp katru saistīto tabulu pāri, kad pievienojat tabulas. Ja ir iespējota attiecinošā integritāte, Access parāda arī "1" virs savienotājlīnijas, lai parādītu, kura tabula atrodas relācijas viens pret daudziem pusē "viens", un bezgalības simbolu (∞), lai parādītu, kura tabula atrodas pusē "daudzi".
Pat ja vēl neesat izveidojis relācijas, Access automātiski izveido iekšējos savienojumus, ja vaicājumam pievienojat divas tabulas, un katrai no šīm tabulām ir lauks ar vienādu vai saderīgu datu tipu un viens no savienojuma laukiem ir primārā atslēga. Simboli "viens" un "daudzi" šajā gadījumā netiek parādīti, jo attiecinošā integritāte nav iespējota.
Ja vaicājumam pievienojat citus vaicājumus un starp šiem vaicājumiem nav izveidotas relācijas, Access starp šiem vaicājumiem vai starp vaicājumiem un tabulām automātiski neizveido iekšējos savienojumus. Parasti jums tie ir jāizveido pašam. Iekšējo savienojumu izveido, velkot lauku no viena datu avota uz cita datu avota lauku. Programma Access parāda līniju starp abiem laukiem, lai parādītu, ka savienojums ir izveidots.
SQL sintakse iekšējam savienojumam
Iekšējie savienojumi SQL tiek norādīti klauzulā FROM, kā parādīts tālāk:
FROM table1 INNER JOIN table2 ON table1. Lauks1 Salīdzināt tabulu2. 2. lauks
Operācijai INNER JOIN ir šādi elementi:
| Daļa | Apraksts |
|---|---|
| tabula1, tabula2 | To tabulu nosaukumi, kuru ieraksti tiek apvienoti. |
| 1.lauks, 2.lauks | To lauku nosaukumi, kas tiek savienoti. Ja tie nav skaitliski, laukiem jābūt vienāda datu tipa un jāsatur viena veida dati, taču nav jābūt ar vienu nosaukumu. |
| salīdzināt | Jebkurš no relāciju salīdzināšanas operatoriem: "=," "<," ">=," "<=," vai> "<>." |
Papildinformāciju par inner join sintaksi skatiet tēmā Operācija INNER JOIN.
Rādīt visas rindas no vienas tabulas un atbilstošās rindas no otras tabulas
Ārējie savienojumi vaicājumam norāda, ka, lai gan dažas rindas abās savienojuma pusēs precīzi sakrīt, vaicājumā jāiekļauj visas rindas no vienas tabulas, kā arī tās rindas no otras tabulas, kurām ir kopīga vērtība abās savienojuma pusēs.
Ārējie savienojumi var būt kreisie ārējie savienojumi vai var būt taisnie ārējie savienojumi. Kreisā ārējā savienojumā vaicājums iekļauj visas rindas no pirmās tabulas SQL priekšraksta FROM klauzulā un tikai tās rindas no otras tabulas, kuru savienojošais lauks satur vērtības, kas ir kopīgas abām tabulām. Labā ārējā savienojumā vaicājumā tiek iekļautas visas rindas no otrās tabulas SQL priekšraksta FROM klauzulā un tikai tās rindas no otras tabulas, kuru savienojošais lauks satur abām tabulām kopīgas vērtības.
Piezīme
Varat viegli noteikt, kura tabula ir kreisā vai labā tabula attiecīgajā savienojumā, veicot dubultklikšķi uz savienojuma un pēc tam meklējot dialoglodziņu Savienojuma rekvizīti . Varat arī pārslēgties uz SQL skatu un pēc tam pārbaudīt klauzulu FROM.
Tā kā dažām rindām vienā ārējā savienojuma pusē nebūs atbilstošu rindu no otras tabulas, daži lauki, kas atgriezti vaicājuma rezultātos no šīs otras tabulas, būs tukši, ja rindas neatbilst.
Kā izmantot ārējo savienojumu?
Ārējo savienojumu izveido, modificējot esošu iekšējo savienojumu. Ja iekšējā savienojuma nav, izveidojiet tādu un pēc tam mainiet to uz ārējo savienojumu.
Iekšējā savienojuma mainīšana uz ārējo savienojumu
- Vaicājuma noformējuma skatā veiciet dubultklikšķi uz savienojuma, kuru vēlaties mainīt.
Tiek parādīts dialoglodziņš Savienojuma rekvizīti. - Dialoglodziņā Savienojuma rekvizīti ņemiet vērā izvēles iespējas, kas norādītas blakus 2 . un 3. opcijai.
- Noklikšķiniet uz tās opcijas, kuru vēlaties lietot un pēc tam uz Labi.
- Programma Access parāda savienojumu un bultiņu, kas norāda no datu avota, kur tiks iekļautas visas rindas, uz datu avotu, kur tiks iekļautas tikai tās rindas, kas atbilst apvienošanas nosacījumam.
Neviennozīmīgi ārējie savienojumi
Ja izveidojat vaicājumu, kas ietver LEFT JOIN un INNER JOIN, Access nevar noteikt, kuru savienojuma darbību veikt vispirms. Tā kā rezultāti atšķiras atkarībā no tā, vai vispirms tiek veikts kreisais vai iekšējais savienojums, Access parāda kļūdas ziņojumu:
Lai izlabotu šo kļūdu, modificējiet vaicājumu tā, lai būtu skaidrs, kuru savienošanu veikt vispirms.
SQL sintakse ārējam savienojumam
Ārējie savienojumi tiek norādīti SQL klauzulā FROM, kā parādīts tālāk:
FROM table1 [ LEFT | RIGHT ] JOIN table2
ON table1.field1 salīdzināt table2.field2
Operācijām LEFT JOIN un RIGHT JOIN ir šādas daļas:
| Daļa | Apraksts |
|---|---|
| tabula1, tabula2 | To tabulu nosaukumi, kuru ieraksti tiek apvienoti. |
| 1.lauks, 2.lauks | To lauku nosaukumi, kas tiek savienoti. Laukiem ir jābūt vienāda tipa datiem un jāsatur vienāda veida dati, taču to nosaukumiem nav jābūt vienādiem. |
| salīdzināt | Jebkurš no relāciju salīdzināšanas operatoriem: "=," "<," ">=," "<=," vai> "<>." |
Papildinformāciju par ārējā savienojuma sintaksi skatiet tēmā Operācijas LEFT JOIN, RIGHT JOIN.
Rādīt visas rindas no abām tabulām un savienot tās, ja pastāv kopīga vērtība
Ja vēlaties parādīt visas rindas no divām tabulām un savienot tās, pamatojoties uz kopīgām vērtībām, izmantojiet pilnu ārējo savienojumu. Programma Access neatbalsta pilnus ārējos savienojumus, bet to pašu efektu var panākt, izmantojot apvienošanas vaicājumu. Tālāk ir paskaidrots, kā to izdarīt, bet, ja vēlaties iegūt papildinformāciju par apvienošanas vaicājumiem, skatiet sadaļu Skatiet arī .
Lai izmantotu apvienošanas vaicājumu pilna ārējā savienojuma veikšanai:
Izveidojiet vaicājumu, kuram ir kreisais ārējais savienojums laukā, kuru vēlaties izmantot pilnai ārējai savienošanai.
Cilnes Sākums grupā Skati noklikšķiniet uz Skats un pēc tam uz SQL skats.
Nospiediet taustiņu kombināciju CTRL+C, lai kopētu SQL kodu.
Izdzēsiet semikolu klauzulas FROM beigās un pēc tam nospiediet taustiņu ENTER.
Ierakstiet UNION un pēc tam nospiediet taustiņu ENTER.
Piezīme
Neizmantojiet atslēgvārdu ALL, kad izmantojat apvienošanas vaicājumu, lai veiktu pilnu ārējo savienojumu.
Nospiediet taustiņu kombināciju CTRL+V, lai ielīmētu SQL kodu, kuru nokopējāt 3. darbībā.
Ielīmētajā kodā mainiet LEFT JOIN uz RIGHT JOIN.
Izdzēsiet semikolu otrās klauzulas FROM beigās un pēc tam nospiediet taustiņu ENTER.
Pievienojiet klauzulu WHERE, kas norāda, ka pirmajā klauzulas FROM norādītajā tabulā (kreisajā tabulā) savienojuma lauka vērtība ir NULL.
Piemēram, ja klauzula FROM ir:FROM Products RIGHT JOIN [Order Details] ON Products.ID = [Order Details].[Product ID]Jāpievieno šāda klauzula WHERE:
WHERE Products.ID IS NULLKlauzulas WHERE beigās ierakstiet semikolu (;), lai norādītu apvienošanas vaicājuma beigas.
Cilnes Noformējums grupā Rezultāti noklikšķiniet uz Izpildīt.
Šķērssavienojumi
Šķērssavienojumi atšķiras no iekšējiem un ārējiem savienojumiem, jo tie netiek skaidri attēloti programmā Access. Šķērssavienojumā katra rinda no vienas tabulas tiek apvienota ar katru rindu no citas tabulas, iegūstot tā saukto šķērsproduktu vai Dekarta reizinājumu. Katru reizi, kad izpildāt vaicājumu, kurā ir tabulas, kas nav skaidri savienotas, rezultāts ir krusteniskā predējums. Šķērssavienojumi parasti ir netīši, bet ir gadījumi, kad tie var būt noderīgi.
Kāpēc izmantot šķērssavienojumu?
Ja vēlaties izpētīt visas iespējamās rindu kombinācijas starp divām tabulām vai vaicājumiem, izmantojiet šķērssavienojumu. Piemēram, pieņemsim, ka jūsu uzņēmumam ir bijis iespaidīgs gads un jūs apsverat iespēju piešķirt atlaides saviem klientiem. Varat izveidot vaicājumu, kurā tiek summēti katra klienta pirkumi, izveidot nelielu tabulu, kurā ir vairākas iespējamās atlaižu procentuālās vērtības, un apvienot šīs abas vērtības citā vaicājumā, kas veic šķērsenisko savienojumu. Tiek iegūts vaicājums, kas parāda hipotētisku atlaižu kopu katram klientam.
Kā izmantot šķērssavienojumu?
Šķērssavienojums tiek izveidots ikreiz, kad vaicājumā iekļaujat tabulas vai vaicājumus, un tādējādi netiek izveidots vismaz viens tiešs savienojums katrai tabulai vai vaicājumam. Programma Access apvieno katru rindu no tabulas vai vaicājuma, kas nav tieši savienots ar citu tabulu vai vaicājumu, ar katru otro rindu rezultātos. Apsveriet atlaides scenāriju no iepriekšējās rindkopas. Pieņemsim, ka jums ir 91 klients un vēlaties apskatīt piecas iespējamās atlaižu procentuālās vērtības. Jūsu krusteniskā savienojuma rezultāts ir 455 rindas (91 un 5 reizinājums).
Kā jau varat iedomāties, nejauši šķērssavienojumi var jūsu vaicājuma rezultātos izveidot milzīgu rindu skaitu. Turklāt šiem rezultātiem parasti ir bezjēdzīga, jo, ja neplānojat apvienot katru rindu ar katru otro rindu, lielākajai daļai rezultātos redzamo apvienoto rindu nebūs jēgas. Visbeidzot, vaicājumiem, kuros tiek izmantoti netīši šķērssavienojumi, var būt nepieciešams ļoti ilgs laiks.
1. Apvilktie lauki ir jāsavieno viens ar otru.
1. Ievērojiet ļoti lielo ierakstu skaitu.
1. Ņemiet vērā, ka ierakstu skaits ir daudz mazāks.
Tabulu savienošana, pamatojoties uz lauku vērtību nevienlīdzību
Savienojumiem nav jābūt balstītiem uz saistīto lauku ekvivalenci . Savienojuma pamatā var būt jebkurš salīdzināšanas operators, piemēram, lielāks par (>), mazāks par (<) vai nav vienāds ar (<>). Savienojumi, kuru pamatā nav ekvivalence, tiek saukti par nevienlīdzīgiem savienojumiem.
Ja vēlaties apvienot divu datu avotu rindas, pamatojoties uz lauku vērtībām, kas nav vienādas, izmantojiet nevienlīdzīgu savienošanu. Parasti nevienādu savienojumu pamatā ir salīdzināšanas operatori, kas lielāks par (>), mazāks par (<), lielāks vai vienāds ar (>=), vai mazāks vai vienāds ar (<=). Nevienlīdzīgi savienojumi, kuru pamatā ir operators nav vienāds (<>), var atgriezt gandrīz tikpat daudz rindu kā šķērssavienojumi, un rezultātus var būt grūti interpretēt.
Kā izmantot nevienlīdzīgu savienojumu?
Nevienlīdzīgi savienojumi noformējuma skatā netiek atbalstīti. Ja vēlaties tās izmantot, tas jādara, izmantojot SQL skatu. Tomēr savienojumu var izveidot noformējuma skatā, pārslēgties uz SQL skatu, atrast vienādību (=) salīdzināšanas operatoru un mainīt to uz operatoru, kuru vēlaties izmantot. Pēc šo darbību veikšanas vaicājumu noformējuma skatā var atvērt vēlreiz tikai tad, ja vispirms SQL skatā salīdzināšanas operators ir mainīts atpakaļ uz vienādību (=).
Savienojuma dzēšana
Ja programma Access automātiski izveido nevajadzīgu savienojumu vai kļūdas dēļ izveidojat savienojumu, piemēram, savienojumu starp diviem laukiem ar atšķirīgiem datu tipiem, savienojumu varat izdzēst.
- Vaicājuma noformējuma režģī noklikšķiniet uz savienojuma, kuru vēlaties noņemt.
- Nospiediet taustiņu DELETE.
- vai -
- Vaicājuma noformējuma režģī ar peles labo pogu noklikšķiniet uz savienojuma, kuru vēlaties noņemt, un pēc tam noklikšķiniet uz Dzēst.
Ierakstu pievienošana tabulai, izmantojot pievienošanas vaicājumuVairāku atlases vaicājumu rezultātu apvienošana, izmantojot apvienošanas vaicājumuTāda vaicājuma izveide, kura pamatā ir vairākas tabulasRelācijas izveide, rediģēšana vai dzēšana