Tabulu un vaicājumu savienojumi

Piezīme.: Mēs vēlamies sniegt jums visjaunāko palīdzības saturu jūsu valodā, cik vien ātri to varam. Šī lapa ir tulkota automatizēti, un tajā var būt gramatiskas kļūdas un neprecizitātes. Mūsu nolūks ir šo saturu padarīt jums noderīgu. Vai lapas lejasdaļā varat mums pavēstīt, vai informācija jums noderēja? Ērtai atsaucei šeit ir šis raksts angļu valodā.

Ja Access vaicājumā iekļaujat vairākus datu avotus, ir jāizmanto savienojumi, lai ierobežotu ierakstus, kurus vēlaties skatīt, pamatojoties uz to, kā datu avoti ir savstarpēji saistīti. Savienojumus varat arī izmantot, lai apvienotu ierakstus no abiem datu avotiem, lai katrs ierakstu pāris no avotiem kļūtu par vienu ierakstu vaicājuma rezultātos.

Šajā rakstā ir aplūkoti dažādi savienojumu tipi un parādīts, kā tos lietot vaicājumā. Pēc noklusējuma savienojums tiek izveidots automātiski, ja pastāv relācija starp diviem datu avotiem, ko izmantojat vaicājumā. Savienojums tiek izveidots arī tad, ja ir lauki, kas skaidri atbilst vienam ar otru. Varat izdzēst automātiski izveidotu savienojumu. Šajā rakstā ir sniegta pamatinformācija par tabulu relācijām, tostarp, kā to izveidot.

Piezīme.: Varat pievienoties vaicājumiem tādā pašā veidā, kā savienojat tabulas, kā arī var pievienoties abas.

Šajā rakstā

Pārskats

Savienojumu tipi

Rādīt rindas, kurās ir kopēja vērtība abās saistītajās tabulās

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 pievienoties tām, kur pastāv kopēja vērtība

Krusteniskie savienojumi

Tabulu savienošana, ņemot vērā lauku vērtību nevienlīdzības

Savienojuma dzēšana

Pārskats

Datu bāze ir tādu datu tabulu kolekcija, kas veido loģiskas relācijas ar otru. Jūs izmantojat relācijas, lai tabulas savienotu ar laukiem, kas ir kopīgi. Tabula var būt daļa no jebkura skaita relācijas, taču katrā relācijā vienmēr ir tieši divas tabulas. Vaicājumā relācijas attēlojumu veido savienojums.

Kad vaicājumam pievienosit tabulas, Access izveido savienojumus, kuru pamatā ir relācijas, kas ir definētas tabulās. Varat manuāli izveidot savienojumus vaicājumos pat tad, ja tie neattēlo jau definētās relācijas. Ja kā vaicājuma datu avotus izmantojat citus vaicājumus (nevis tabulas), varat izveidot savienojumus starp avota vaicājumiem, kā arī starp šiem vaicājumiem un jebkuru tabulu, kas tiek izmantota kā datu avoti.

Savienojumi darbojas līdzīgi vaicājuma kritērijiem, jo tie izveido kārtulas, kurām jāatbilst vaicājuma operācijās ietvertajiem datiem. Atšķirībā no kritērijiem, savienojumi norāda arī to, ka visi rindu pāri, kas apmierina savienojuma nosacījumus, tiek apvienoti ierakstkopā, lai veidotu vienu rindu.

Pastāv četri galvenie savienojumu tipi: iekšējie savienojumi, ārējie savienojumi, krusteniskie savienojumi un nevienlīdzīgie savienojumi. Šajā rakstā ir aplūkots katra tipa savienojums, ko varat izmantot, kāpēc izmantojat katru veidu un kā izveidot savienojumus.

Savienojumi ir vaicājumi par to, kādas relācijas ir tabulās: norādījums par to, kā divu avotu datus var apvienot, pamatojoties uz to datu vērtībām, kas ir kopīgas. Tālāk ir parādīts, kā pievienoties vaicājuma noformējuma skatam, ar dialoglodziņā atvērtu savienojuma rekvizītus:

Lodziņš Savienojuma rekvizīti

Šī rinda starp tabulām apzīmē savienojumu. Veiciet dubultklikšķi uz savienojuma, lai atvērtu dialoglodziņu savienojuma rekvizīti (attēlots) un pārskatītu vai mainītu savienojumu.

Savienojumi dažreiz ir virziena. Šajā dialoglodziņa apgabalā ir parādīts, kuru tabulu vēlaties pievienoties, un kuri lauki tiek izmantoti, lai pievienotos tabulām.

Šis apgabals nosaka savienojuma tipu: opcija 1 ir iekšējais savienojums, 2 ir Kreisais ārējais savienojums, bet 3 ir labais ārējais savienojums.

Var izmantot abu tabulu laukus, kā arī datus, kas attiecas uz konkrētu uzdevumu, tiek parādīti katram no tiem. Iekšējā savienojumā nav iekļauti citi dati. Ārējā savienojumā vaicājuma rezultātos tiek iekļauti arī nesaistīti ieraksti no vienas tabulas.

Uz lapas sākumu

Savienojumu tipi

Pastāv četri galvenie savienojumu tipi: iekšējie savienojumi, ārējie savienojumi, krusteniskie savienojumi un nevienlīdzīgie savienojumi. Krusteniskie savienojumi un nevienlīdzīgie savienojumi ir papildu savienojuma tipi, un tos izmanto reti, taču jums ir jāzina, ka ir pilnīga izpratne par to, kā savienojumi darbojas.

Iekšējie savienojumi: tikai saistīti dati no abām tabulām

Iekšējais savienojums ir viens, kur programma Access iekļauj datus tikai no tabulas, ja atbilstošajā tabulā ir dati, un otrādi. Vairākumā laiku jūs izmantosiet iekšējos savienojumus. Kad veidojat savienojumu un nenorāda, kāda veida savienojums ir, programma Access pieņems, ka vēlaties izveidot iekšēju savienojumu. Iekšējie savienojumi ir noderīgi, jo tie ļauj apvienot divu avotu datus, ņemot vērā koplietojamās vērtības, un jūs redzat datus tikai tad, kad ir pieejams viss attēls.

Ārējie savienojumi: visi saistītie dati ir pareizi apvienoti, kā arī visi pārējie ieraksti no vienas tabulas

Ārējais savienojums ir līdzīgs iekšējam savienojumam, bet tiek pievienotas atlikušās rindas no vienas tabulas. Ārējie savienojumi ir directional (kreisais ārējais savienojums ir visi ieraksti no kreisās tabulas — pirmā savienojuma tabula, kurā ir iekļauti visi ieraksti no labās tabulas — otrā tabula savienojumā.

Pilni ārējie savienojumi: visi dati, kas tiek apvienoti, ja iespējams

Dažās sistēmās ārējais savienojums var ietvert visas rindas no abām tabulām, kad tās atbilst rindām. Tas tiek dēvēts par pilnu ārējo savienojumu, un programma Access tos neatbalsta. Taču varat izmantot krustenisko savienojumu un kritērijus, lai sasniegtu tādu pašu efektu.

Krusteniskie savienojumi: visi dati, apvienoti visos iespējamajos paņēmienos

Vairākumā gadījumu krusteniskais savienojums ir divu tabulu pieskaitīšanas blakus efekts, un pēc tam tiem jāpievienojas. Access to interpretē nozīmē, ka vēlaties skatīt katru ierakstu no vienas tabulas kopā ar katru ierakstu no otras tabulas — visu iespējamo ierakstu kombināciju. Tā kā nevar apvienot datus, šāda veida savienojums reti rada noderīgus rezultātus. Taču ir daži gadījumi, kad krusteniskais savienojums ir tieši tas, kas jums ir nepieciešams.

Nevienlīdzīgie savienojumi: līdzīgi parastajam savienojumam, bet, izmantojot citu salīdzinājumu rindu kombinēšanai

Nevienlīdzīgie savienojumi izmanto operatoru, kas nav vienādības zīme (=), lai salīdzinātu vērtības un noteiktu, vai un kā apvienot datus. Nevienlīdzīgie savienojumi netiek viennozīmīgi atbalstīti, bet, lai panāktu tādu pašu efektu, varat izmantot krustenisko savienojumu un kritērijus.

Rādīt rindas, kurās ir kopēja vērtība abās saistītajās tabulās

Ja vēlaties parādīt tikai tās rindas, kurās ir atbilstošas vērtības apvienotajā laukā, jūs izmantojat iekšēju savienojumu. Programma Access automātiski izveido iekšējos savienojumus.

Iekšējais savienojums ir izplatītākais savienojumu tips. Tie norāda vaicājumu, ka viena no Savienotajām tabulām rindas atbilst otras tabulas rindām, pamatojoties uz Savienoto lauku datiem. Kad tiek palaists vaicājums ar iekšējo savienojumu, vaicājuma operācijās tiks iekļautas tikai tās rindas, kurās ir kopēja vērtība abās saistītajās tabulās.

Kā lietot iekšējo savienojumu?

Vairākumā laiku nav jāveic nekādas nekādas funkcijas, lai izmantotu iekšējo savienojumu. Ja tabulām, ko pievienojat vaicājumam, jau ir relācijas, programma Access automātiski izveido iekšējo savienojumu starp katru saistīto tabulu pārī, kad pievienojat tabulas. Ja atsauču integritāte ir spēkā, Access parāda arī "1" virs savienotājlīnijas, lai parādītu, kura tabula atrodas attiecība viens pret daudziem pusē "viens", un bezgalības simbolu (), lai parādītu, kura tabula atrodas pusē "daudzi".

Pat tad, ja neesat izveidojis relācijas, programma Access automātiski izveido iekšējos savienojumus, ja vaicājumam pievienojat divas tabulas un šīm tabulām ir lauks ar tādu pašu vai saderīgu datu tipu un viens no laukiem Join ir primārā atslēga. Šajā gadījumā nav parādīts simbols "viens" un "daudzi", jo attiecinošā integritāte nav iespējota.

Ja vaicājumam pievienosit vaicājumus un neesat izveidojis relācijas starp šiem vaicājumiem, programma Access automātiski neveido iekšējos savienojumus starp šiem vaicājumiem vai starp vaicājumiem un tabulām. Parasti tos varat izveidot pats. Izveidojiet iekšēju savienojumu, velkot lauku no viena datu avota uz lauku citā datu avotā. Programma Access parāda līniju starp abiem laukiem, lai parādītu, ka savienojums ir izveidots.

Iekšējā savienojuma SQL sintakse

Iekšējie savienojumi ir norādīti SQL klauzulā FROM, kā parādīts tālāk:

FROM tabula1 INNER JOIN tabula2 ON tabula1.Lauks1 salīdziniet Tabula2.lauks2

Operācijai INNER JOIN ir šādi elementi:

Daļa

Apraksts

tabula1, tabula2

To tabulu nosaukumi, kuru ieraksti tiek apvienoti.

1.lauks, 2.lauks

Savienoto lauku nosaukumi. Ja tie nav skaitliski, laukiem jābūt ar vienādu datu tips 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: \ldblquote =,\rdblquote \ldblquote <,\rdblquote \ldblquote >,\rdblquote \ldblquote <=,\rdblquote \ldblquote >=\rdblquote vai \ldblquote <>\rdblquote .

Papildinformāciju par iekšējo savienojumu sintaksi skatiet tēmā Operācija INNER JOIN.

Uz lapas sākumu

Rādīt visas rindas no vienas tabulas un atbilstošās rindas no otras tabulas

Ārējie savienojumi norāda vaicājumu, ka, lai gan dažas rindas abās pievienošanās pusēs precīzi atbilst, vaicājumā ir jāiekļauj visas rindas no vienas tabulas, kā arī tās rindas no citas tabulas, kurās ir kopēja vērtība abās savienojuma pusēs.

Ārējos savienojumus var kreisās puses savienojumi, vai tie var būt tieši ārējie savienojumi. Kreisajā ārējā savienojumā vaicājumā ir iekļautas visas rindas no pirmās tabulas SQL priekšraksta klauzulā FROM, un tikai tās rindas no citas tabulas, kurās apvienotajā laukā ir vērtības, kas ir kopīgas abām tabulām. Labajā ārējā savienojumā vaicājums iekļauj visas rindas no otrās tabulas SQL priekšraksta klauzulā FROM, un tikai tās rindas no citas tabulas, kurās apvienotajā laukā ir vērtības, kas ir kopīgas abām tabulām.

Piezīme.: Varat viegli noteikt, kura tabula ir kreisā tabula vai norādītā savienojuma labajā tabulā, veicot dubultklikšķi uz savienojuma un pēc tam skatot dialoglodziņā savienojuma rekvizīti . Varat arī pārslēgties uz SQL skatu un pēc tam pārbaudīt klauzulu FROM.

Tā kā dažām rindiņām vienā ārējā savienojuma pusē nebūs atbilstošo rindu no otras tabulas, daži no laukiem, kas tiek atgriezti vaicājuma rezultātos no šīs citas tabulas, būs tukši, kad rindas neatbilst.

Kā izmantot ārējo savienojumu?

Jūs izveidojat ārējo savienojumu, modificējot esošu iekšējo savienojumu. Ja nav iekšējā savienojuma, izveidojiet to un pēc tam nomainiet uz ārējo savienojumu.

Iekšējā savienojuma mainīšana uz ārējo savienojumu

  1. Noformējuma skatā veiciet dubultklikšķi uz savienojuma, kuru vēlaties mainīt.

    Tiek parādīts dialoglodziņš Savienojuma rekvizīti.

  2. Dialoglodziņā savienojuma rekvizīti ievērojiet izvēles, kas norādītas blakus opcijai 2 un opcijai 3.

  3. Noklikšķiniet uz tās opcijas, kuru vēlaties lietot un pēc tam uz Labi.

  4. Programma Access parāda savienojumu un parāda bultiņu, kas norāda no datu avota, kur visas rindas tiks iekļautas datu avotā, kur tiks iekļautas tikai tās rindas, kas atbilst savienojuma nosacījumam.

Neviennozīmīgi ārējie savienojumi

Ja izveidojat vaicājumu, kurā ir iekļauts KREISais savienojums un iekšējais savienojums, programma Access, iespējams, nevarēs noteikt, kura savienojuma operācija jāveic vispirms. Tā kā rezultāti ir atšķirīgi atkarībā no tā, vai vispirms tiek veikts kreisais savienojums vai iekšējais savienojums, programma Access parāda kļūdas ziņojumu:

Lai izlabotu šo kļūdu, vaicājums ir jāmodificē, lai būtu skaidri norādīts, kurš savienojums ir jāveic vispirms.

Ārējā savienojuma SQL sintakse

Ārējie savienojumi ir norādīti SQL klauzulā FROM, kā parādīts tālāk:

FROM Table1 [Left | Right] Join Tabula2
uz Table1. Lauks1 salīdziniet Tabula2. Lauks2

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. Laukos ir jābūt vienādam datu tips un tajos jābūt vienāda veida datiem, taču to nosaukumiem nav jābūt vienādiem.

salīdzināt

Jebkurš no relāciju salīdzināšanas operatoriem: \ldblquote =,\rdblquote \ldblquote <,\rdblquote \ldblquote >,\rdblquote \ldblquote <=,\rdblquote \ldblquote >=\rdblquote vai \ldblquote <>\rdblquote .

Lai iegūtu papildinformāciju par ārējo savienojumu sintaksi, skatiet tēmu LEFT JOIN, RIGHT JOIN.

Uz lapas sākumu

Rādīt visas rindas no abām tabulām un pievienoties tām, kur pastāv kopēja vērtība

Ja vēlaties rādīt visas rindas no divām tabulām un tām pievienoties, pamatojoties uz vispārējām vērtībām, izmantojiet pilnu ārējo savienojumu. Access pilnībā neatbalsta pilnīgus ārējos savienojumus, taču varat panākt tādu pašu efektu, izmantojot apvienošanas vaicājumu. Tālāk esošajā procedūrā paskaidrots, kā to paveikt, bet, ja vēlaties uzzināt vairāk informācijas par apvienošanas vaicājumiem, skatiet sadaļu skatiet arī .

Lai izmantotu apvienošanas vaicājumu, lai veiktu pilnu ārējo savienojumu:

  1. Izveidojiet vaicājumu, kuram ir Kreisais ārējais savienojums laukā, kuru vēlaties izmantot pilnam ārējam savienojumam.

  2. Cilnes Sākums grupā Skati noklikšķiniet uz Skats un pēc tam uz SQL skats.

  3. Nospiediet taustiņu kombināciju CTRL + C, lai kopētu SQL kodu.

  4. Izdzēsiet klauzulas FROM beigās esošo semikolu un pēc tam nospiediet taustiņu ENTER.

  5. Ierakstiet UNION un pēc tam nospiediet taustiņu ENTER.

    Piezīme.: Nelietojiet atslēgvārdu ALL, ja izmantojat apvienošanas vaicājumu, lai veiktu pilnu ārējo savienojumu.

  6. Nospiediet taustiņu kombināciju CTRL + V, lai ielīmētu 3. darbībā nokopēto SQL kodu.

  7. Ielīmētajā kodā mainiet kreiso savienojumu uz labo savienojumu.

  8. Izdzēsiet šī punkta otrās klauzulas beigās esošo semikolu un pēc tam nospiediet taustiņu ENTER.

  9. Pievienojiet klauzulu WHERE, kas norāda, ka savienojuma lauka vērtība ir NULL pirmajā tabulā, kas norādīta klauzulā FROM (kreisā tabula).

    Piemēram, ja klauzula FROM ir šāda:

    FROM Products RIGHT JOIN [Order Details] 
    ON Products.ID = [Order Details].[Product ID]

    Varat pievienot šādu klauzulu WHERE:

    WHERE Products.ID IS NULL

  10. Ierakstiet semikolu (;) klauzulas WHERE beigās, lai norādītu apvienošanas vaicājuma beigās.

  11. Cilnes Noformējums grupā Rezultāti noklikšķiniet uz Izpildīt.

Krusteniskie savienojumi

Krusteniskie savienojumi atšķiras no iekšējiem un ārējiem savienojumiem, jo tie nav skaidri attēloti Access. Krusteniskā savienojumā katra vienas tabulas rinda tiek apvienota ar katru citas tabulas rindu, kā rezultātā tiek dēvēts par krustenisko produktu vai Dekarta produktu. Ikreiz, kad izpildāt vaicājumu ar tabulām, kas nav tieši savienotas, tiek iegūts krustenisks produkts. Krusteniskie savienojumi parasti ir nejauši, taču ir gadījumi, kad tie var būt noderīgi.

Kāpēc izmantot krustenisko savienojumu?

Ja vēlaties pārbaudīt visas iespējamās rindu kombinācijas starp divām tabulām vai vaicājumiem, izmantojiet krustenisko savienojumu. Piemēram, pieņemsim, ka jūsu uzņēmumam ir bijis iespaidīgs gads un apsverat iespēju piešķirt klientiem atlaides. Varat izveidot vaicājumu, kas saskaita katra klienta pirkumus, izveido nelielu tabulu, kurā ir vairāki iespējamo atlaižu procenti, un kombinē divus citā vaicājumā, kas veic krustenisko savienojumu. Jūs galu galā ar vaicājumu, kas parāda hipotētisku atlaižu kopu katram klientam.

Kā lietot krustenisko savienojumu?

Krusteniskais savienojums tiek izveidots jebkurā brīdī, kad vaicājumā iekļaujat tabulas vai vaicājumus un neveidojat vismaz vienu skaidru savienojumu katrai tabulai vai vaicājumam. Programmā Access tiek apvienotas visas rindas no katras tabulas vai vaicājuma, kas nav tieši savienotas ar jebkuru citu tabulu vai vaicājumu. Apsveriet atlaides scenāriju no iepriekšējās rindkopas. Pieņemsim, ka jums ir 91 klienti un jūs vēlaties apskatīt piecas iespējamās atlaižu procentuālās vērtības. Krusteniskais savienojums izveido 455 rindas (produkts 91 un 5).

Kā varētu iedomāties, netīši krusteniskie savienojumi vaicājuma rezultātos var izveidot milzīgu rindu skaitu. Turklāt šiem rezultātiem ir nenozīmīgs, jo, ja reāli neplānojat apvienot katru rindu ar katru otro rindu, lielākā daļa no apvienotajām rindām, kas tiek rādītas rezultātos, nav jēgpilna. Visbeidzot vaicājumi, kuros tiek izmantoti netīši krusteniskie savienojumi, var ilgt ļoti ilgu laiku.

Netīšais krusteniskais savienojums vaicājumā noformējuma skatā

1. Apvilktie lauki ir jāpievieno cits citam.

Netīšais krusteniskais produkts

1. Ievērojiet ļoti lielo ierakstu skaitu.

Izlabotā vaicājuma rezultāts

1. Ievērojiet, ka ierakstu skaits ir daudz mazāks.

Uz lapas sākumu

Tabulu savienošana, ņemot vērā lauku vērtību nevienlīdzības

Savienojumiem nav jābalstās uz Savienoto lauku līdzvērtību . Savienojums var tikt pamatots uz jebkuru salīdzinājuma operatoru, piemēram, lielāks par (>), mazāks par (<) vai nav vienāds ar (<>). Savienojumi, kuru pamatā nav līdzvērtība, tiek dēvēti par nevienādiem savienojumiem.

Ja vēlaties apvienot divu datu avotu rindas, pamatojoties uz lauku vērtībām, kas nav vienādas, izmantojiet nevienlīdzīgu savienojumu. Parasti nevienlīdzīgie savienojumi ir pamatoti uz vai nu lielāks par (>), mazāks par (<), lielāks par vai vienāds ar (> =), vai mazāks vai vienāds ar (< =) salīdzinājuma operatoriem. Nevienlīdzīgie savienojumi, kuru pamatā ir nav vienāds ar (<>) operators, var atgriezt gandrīz tik daudz rindu, cik krusteniskie savienojumi, un rezultātus var būt grūti interpretēt.

Kā izmantot nevienlīdzīgo savienojumu?

Nevienlīdzīgie savienojumi netiek atbalstīti noformējuma skatā. Ja vēlaties to izmantot, tas ir jādara, izmantojot SQL skatu. Taču varat izveidot savienojumu noformējuma skatā, pārslēgties uz SQL skatu, atrast salīdzinājuma operatoru vienāds ar (=) un mainīt to uz operatoru, kuru vēlaties izmantot. Kad tas ir paveikts, varat atvērt vaicājumu tikai noformējuma skatā, ja pirmo reizi maināt salīdzinājuma operatoru atpakaļ uz vienāds ar (=) SQL skatā.

Savienojuma dzēšana

Ja Access automātiski izveido savienojumu, kuru nevēlaties izmantot, vai arī veidojat savienojumu ar kļūdu, piemēram, savienojums starp diviem laukiem, kuros ir atšķirīgi datu tipi, varat izdzēst savienojumu.

  1. Vaicājuma noformējuma režģī noklikšķiniet uz tā savienojuma, kuru vēlaties noņemt.

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

Uz lapas sākumu

Skatiet arī

Ierakstu pievienošana tabulai, izmantojot pievienošanas vaicājumu

Vairāku atlases vaicājumu rezultātu apvienošana, izmantojot apvienošanas vaicājumu

Vaicājuma izveide, balstoties uz vairākām tabulām

Relācijas izveide, rediģēšana vai dzēšana

Paplašiniet savas Office prasmes
Iepazīties ar apmācību
Esiet pirmais, kas saņem jaunās iespējas
Pievienoties Office Insider programmai

Vai šī informācija bija noderīga?

Paldies par jūsu atsauksmēm!

Paldies par atsauksmēm! Šķiet, ka varētu būt noderīgi sazināties ar kādu no mūsu Office atbalsta aģentiem.

×