Applies ToAccess pentru Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Atunci când includeți mai multe surse de date într-o interogare Access, utilizați asocieri pentru a limita înregistrările pe care doriți să le vedeți, în funcție de modul în care sursele de date sunt legate între ele. De asemenea, utilizați asocieri pentru a combina înregistrări din ambele surse de date, astfel încât fiecare pereche de înregistrări din surse să devină o înregistrare în rezultatele interogării.

Acest articol descrie diversele tipuri de uniri și vă arată cum să le utilizați într-o interogare. În mod implicit, o asociere se creează automat dacă există deja o relație între două surse de date pe care le utilizați într-o interogare. De asemenea, se creează o asociere dacă există câmpuri care corespund în mod clar între ele. Puteți șterge o asociere creată automat. Acest articol oferă informații de bază despre relațiile între tabele, inclusiv despre crearea uneia.

Notă: Puteți să asociați interogările la fel cum asociați tabelele și, de asemenea, să le asociați pe ambele.

În acest articol

Prezentare generală

O bază de date este o colecție de tabele de date care poartă relații logice între ele. Utilizați relații pentru a conecta tabelele după câmpurile pe care le au în comun. Un tabel poate face parte din orice număr de relații, dar fiecare relație are întotdeauna exact două tabele. Într-o interogare, o relație este reprezentată printr-o asociere.

Când adăugați tabele la o interogare, Access creează asocieri care se bazează pe relații care au fost definite între tabele. Puteți crea manual asocieri în interogări, chiar dacă acestea nu reprezintă relații care au fost deja definite. Dacă utilizați alte interogări (în loc de sau în plus față de tabele) ca surse de date pentru o interogare, puteți crea asocieri între interogările sursă și, de asemenea, între acele interogări și orice tabele pe care le utilizați ca surse de date.

Asocierile se comportă similar cu criteriile de interogare, prin faptul că stabilesc reguli care trebuie să corespundă pentru a fi incluse în operațiunile de interogare. Spre deosebire de criterii, asocierile specifică și faptul că fiecare pereche de rânduri care îndeplinesc condițiile de asociere va fi combinată în setul de înregistrări pentru a forma un singur rând.

Există patru tipuri de bază de uniri: uniri interne, uniri externe, uniri încrucișate și uniri inegale. Acest articol explorează fiecare tip de asociere pe care o puteți utiliza, de ce utilizați fiecare tip și cum să creați asocierile.

Asocierile sunt la interogări care sunt relațiile cu tabelele: o indicație a modului în care datele din două surse pot fi combinate pe baza valorilor de date pe care le au în comun. Iată o ilustrație cu o asociere în Vizualizarea proiect a interogării, cu proprietățile asocierii deschise într-o casetă de dialog:

Caseta Proprietăți asociere

Această linie dintre tabele reprezintă asocierea. Faceți dublu clic pe o asociere pentru a deschide caseta de dialog Proprietăți asociere (ilustrată) și revizuiți sau modificați asocierea.

Asocierile sunt uneori direcționale. Această zonă a casetei de dialog vă arată ce tabel se află în asociere și ce câmpuri sunt utilizate pentru asocierea tabelelor.

Această zonă determină tipul de unire: opțiunea 1 este o unire internă, 2 este o unire externă la stânga și 3 este o unire externă la dreapta.

Câmpurile din ambele tabele pot fi utilizate, iar datele care aparțin unei activități date sunt afișate din fiecare. Într-o unire internă, nu sunt incluse alte date. Într-o unire externă, înregistrările neasociate dintr-un tabel sunt incluse, de asemenea, în rezultatele interogării.

Începutul paginii

Tipuri de uniri

Există patru tipuri de bază de uniri: uniri interne, uniri externe, uniri încrucișate și uniri inegale. Unirile încrucișate și unirile inegale sunt tipuri de uniri complexe și sunt rareori utilizate, dar ar trebui să știți despre ele pentru a înțelege pe deplin cum funcționează asocierile.

Uniri interne: numai datele asociate din ambele tabele combinate

O unire internă este una în care Access include date dintr-un tabel doar dacă există date corespondente în tabelul asociat și invers. De cele mai multe ori, veți utiliza uniri interne. Atunci când creați o asociere și nu specificați ce tip de asociere este, Access presupune că doriți o asociere internă. Unirile interne sunt utile, deoarece vă permit să combinați date din două surse pe baza valorilor partajate, astfel încât să vedeți date doar atunci când există o imagine completă.

Uniri externe: toate datele asociate combinate corect, plus toate înregistrările rămase dintr-un tabel

O unire externă este ca o unire internă, dar adaugă rândurile rămase dintr-unul dintre tabele. Unirile externe sunt direcționale: o unire externă la stânga include toate înregistrările din tabelul din stânga - primul tabel din asociere - iar o unire externă la dreapta include toate înregistrările din tabelul din dreapta - al doilea tabel din asociere.

Uniri externe complete: toate datele, combinate atunci când este posibil

În unele sisteme, o unire externă poate include toate rândurile din ambele tabele, cu rânduri combinate atunci când corespund. Aceasta se numește unire externă completă, iar Access nu le acceptă în mod explicit. Cu toate acestea, puteți utiliza o asociere încrucișată și criterii pentru a obține același efect.

Uniri încrucișate: toate datele, combinate în toate modurile posibile

De cele mai multe ori, o asociere încrucișată este un efect secundar al adăugării a două tabele la o interogare, apoi uitați să le asociați. Access interpretează acest lucru pentru a însemna că doriți să vedeți fiecare înregistrare dintr-un tabel combinată cu fiecare înregistrare din celălalt tabel - fiecare combinație posibilă de înregistrări. Deoarece nu se pot combina date, acest tip de unire produce rareori rezultate utile. Dar există câteva cazuri în care o asociere încrucișată este exact ceea ce vă trebuie.

Uniri inegale: cum ar fi o asociere obișnuită, dar utilizând o comparație diferită pentru a combina rânduri

Unirile inegale utilizează un operator diferit de semnul egal (=) pentru a compara valori și a determina dacă și cum se combină datele. Unirile inegale nu sunt acceptate în mod explicit, dar puteți utiliza o asociere încrucișată și criterii pentru a obține același efect.

Afișați rândurile unde există o valoare comună în ambele tabele asociate

Dacă doriți să afișați doar rândurile care au valori corespondente în câmpul asociat, utilizați o asociere internă. Access creează automat asocieri interne.

Unirile interne reprezintă cel mai comun tip de unire. Acestea spun unei interogări că rândurile dintr-unul dintre tabelele asociate corespund rândurilor din celălalt tabel, pe baza datelor din câmpurile asociate. Atunci când rulează o interogare cu o asociere internă, doar acele rânduri în care există o valoare comună în ambele tabele asociate vor fi incluse în operațiunile de interogare.

Cum utilizez o asociere internă?

De cele mai multe ori nu trebuie să faceți nimic pentru a utiliza o asociere internă. Dacă tabelele pe care le adăugați la o interogare au deja relații, Access creează automat o asociere internă între fiecare pereche de tabele asociate, atunci când adăugați tabelele. Dacă se impune integritate referențială, Access afișează, de asemenea, un „1” deasupra liniei de asociere, pentru a arăta ce tabel se află pe partea „unu” a unei relație unu-la-mai mulți și un simbol infinit () pentru a afișa ce tabel este pe partea „mulți”.

Chiar dacă nu ați creat relații, Access creează automat asocieri interne dacă adăugați două tabele la o interogare și tabelele respective au fiecare un câmp cu același tip de date sau compatibil și unul dintre câmpurile de asociere este un cheie primară. Simbolurile "unu" și "mai mulți" nu se afișează în acest caz, deoarece integritatea referențială nu este impusă.

Dacă adăugați interogări la interogare și nu ați creat relații între aceste interogări, Access nu creează automat asocieri interne între aceste interogări sau între interogări și tabele. În general, ar trebui să le creați singur. Creați o unire internă glisând un câmp dintr-o sursă de date într-un câmp din altă sursă de date. Access afișează o linie între cele două câmpuri, pentru a arăta că s-a creat o asociere.

Sintaxa SQL pentru o asociere internă

Unirile interne sunt specificate în SQL în clauza FROM, așa cum se arată mai jos:

FROM tabel1 INNER JOIN tabel2 ON tabel1.comparare tabel2 câmp1.câmp2

Operațiunea INNER JOIN (UNIRE INTERNĂ) are următoarele componente:

Parte

Descriere

tabel1, tabel2

Numele tabelelor din care se combină înregistrările.

câmp1, câmp2

Numele câmpurilor care se unesc. Dacă nu sunt numerice, câmpurile trebuie să fie de același tip de date și să conțină același tip de date, dar nu trebuie neapărat să aibă același nume.

Compara

Orice operator de comparație relativă: "=," "<," ">," "<=," ">=," sau "<>."

Pentru mai multe informații despre sintaxa de unire internă, consultați subiectul Operațiunea INNER JOIN.

Începutul paginii

Afișați toate rândurile dintr-un tabel și rândurile corespunzătoare din celălalt tabel

Unirile externe spun unei interogări că, deși unele dintre rândurile de pe ambele părți ale asocierii corespund exact, interogarea ar trebui să includă toate rândurile dintr-un tabel și, de asemenea, rândurile din celălalt tabel care au o valoare comună pe ambele părți ale asocierii.

Unirile externe pot fi uniri externe la stânga sau pot fi uniri externe la dreapta. Într-o asociere externă la stânga, interogarea include toate rândurile din primul tabel în clauza SQL statement FROM și numai rândurile din celălalt tabel în care câmpul de asociere conține valori comune ambelor tabele. Într-o asociere externă la dreapta, interogarea include toate rândurile din al doilea tabel în clauza SQL statement FROM și numai rândurile din celălalt tabel unde câmpul de asociere conține valori comune ambelor tabele.

Notă: Vă puteți da seama cu ușurință care tabel este tabelul din stânga sau tabelul din dreapta într-o asociere dată, făcând dublu clic pe asociere, apoi căutând în caseta de dialog Proprietăți asociere . De asemenea, puteți să comutați la vizualizarea SQL, apoi să examinați clauza FROM.

Deoarece unele rânduri de pe o parte a unei uniri externe nu vor avea rânduri corespondente din celălalt tabel, unele dintre câmpurile returnate în rezultatele interogării din celălalt tabel vor fi goale atunci când rândurile nu corespund.

Cum utilizez o asociere externă?

Creați o unire externă prin modificarea unei uniri interne existente. Dacă nu există o unire internă, creați una, apoi transformați-o într-o unire externă.

Modificarea unei uniri interne într-o unire externă

  1. În Vizualizarea proiect a interogării, faceți dublu clic pe asocierea pe care doriți să o modificați.

    Apare caseta de dialog Proprietăți asociere.

  2. În caseta de dialog Proprietăți asociere , notați opțiunile listate lângă opțiunea 2 și opțiunea 3.

  3. Faceți clic pe opțiunea pe care doriți s-o utilizați, apoi faceți clic pe OK.

  4. Access afișează asocierea și afișează o săgeată care indică de la sursa de date unde toate rândurile vor fi incluse în sursa de date, unde vor fi incluse doar rândurile care satisfac condiția de asociere.

Uniri externe ambigue

În cazul în care creați o interogare care conține o operațiune LEFT JOIN și INNER JOIN, este posibil ca Access să nu poată determina ce operațiune de asociere să efectueze prima. Deoarece rezultatele diferă în funcție de efectuarea asocierii la stânga sau a asocierii interne, Access afișează un mesaj de eroare:

Pentru a corecta această eroare, trebuie să modificați interogarea astfel încât să fie clar ce asociere să se efectueze mai întâi.

Sintaxa SQL pentru o unire externă

Unirile externe sunt specificate în SQL în clauza FROM, așa cum se arată mai jos:

FROM tabel1 [ STÂNGA | RIGHT ] JOIN tabel2ON tabel1.câmp1 comparare tabel2.câmp2

Operațiunile LEFT JOIN și RIGHT JOIN au următoarele componente:

Parte

Descriere

tabel1, tabel2

Numele tabelelor din care se combină înregistrările.

câmp1, câmp2

Numele câmpurilor care se unesc. Câmpurile trebuie să fie de același tip de date și să conțină aceleași tipuri de date, dar nu trebuie neapărat să aibă același nume.

Compara

Orice operator de comparație relativă: "=," "<," ">," "<=," ">=," sau "<>."

Pentru mai multe informații despre sintaxa de unire externă, consultați subiectul OPERAȚIUNI LEFT JOIN, RIGHT JOIN.

Începutul paginii

Afișați toate rândurile din ambele tabele și asociați-le acolo unde există o valoare comună

Atunci când doriți să afișați toate rândurile din două tabele și să le asociați pe baza valorilor comune, utilizați o asociere externă completă. Access nu acceptă în mod explicit uniri externe complete, dar puteți obține același efect utilizând o interogare de uniune. Următoarea procedură vă arată cum să faceți acest lucru, dar, dacă doriți mai multe informații despre interogările de uniune, consultați secțiunea Consultați și .

Pentru a utiliza o interogare de uniune pentru a efectua o unire externă completă:

  1. Creați o interogare care are o unire externă la stânga în câmpul pe care doriți să-l utilizați pentru o unire externă completă.

  2. Pe fila Pornire, în grupul Vizualizări, faceți clic pe Vizualizare, apoi faceți clic pe Vizualizare SQL.

  3. Apăsați CTRL+C pentru a copia codul SQL.

  4. Ștergeți punctul și virgula de la sfârșitul clauzei FROM, apoi apăsați enter.

  5. Tastați UNION, apoi apăsați pe Enter.

    Notă: Nu utilizați cuvântul cheie ALL atunci când utilizați o interogare de uniune pentru a efectua o unire externă completă.

  6. Apăsați CTRL+V pentru a lipi codul SQL pe care l-ați copiat la pasul 3.

  7. În codul pe care l-ați lipit, modificați LEFT JOIN la RIGHT JOIN.

  8. Ștergeți punctul și virgula de la sfârșitul celei de-a doua clauze FROM, apoi apăsați enter.

  9. Adăugați o clauză WHERE care specifică faptul că valoarea câmpului de asociere este NULL în primul tabel listat în clauza FROM (tabelul din stânga).

    De exemplu, dacă clauza FROM este:

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

    Adăugați următoarea clauză WHERE:

    WHERE Products.ID IS NULL

  10. Tastați punct și virgulă (;) la sfârșitul clauzei WHERE pentru a indica sfârșitul interogării de uniune.

  11. Pe fila Proiectare, în grupul Rezultate, faceți clic pe Rulare.

Uniri încrucișate

Unirile încrucișate sunt diferite de unirile interioare și externe, prin faptul că nu sunt reprezentate explicit în Access. Într-o asociere încrucișată, fiecare rând dintr-un tabel este combinat cu fiecare rând din alt tabel, rezultând ceea ce se numește produs în cruce sau produs cartezian. De fiecare dată când rulați o interogare care are tabele care nu sunt asociate explicit, rezultatul este un produs încrucișat. Unirile încrucișate sunt de obicei neintenționate, dar există cazuri în care pot fi utile.

De ce aș folosi o asociere încrucișată?

Dacă doriți să examinați fiecare combinație posibilă de rânduri între două tabele sau interogări, utilizați o asociere încrucișată. De exemplu, să presupunem că afacerea dvs. a avut un an spectaculos și luați în considerare acordarea de bonificații clienților. Puteți să construiți o interogare care însumează achizițiile fiecărui client, să creați un tabel mic care are mai multe procente de bonificație posibile și să le combinați pe cele două într-o altă interogare care efectuează o asociere încrucișată. Veți avea o interogare care afișează un set de bonificații ipotetice pentru fiecare client.

Cum utilizez o asociere încrucișată?

O asociere încrucișată este produsă oricând includeți tabele sau interogări în interogare și nu creați cel puțin o asociere explicită pentru fiecare tabel sau interogare. Access combină fiecare rând din fiecare tabel sau interogare care nu este asociat explicit niciunui alt tabel sau interogare la fiecare alt rând din rezultate. Luați în considerare scenariul de bonificație de la paragraful precedent. Să presupunem că aveți 91 de clienți și că doriți să analizați cinci procente posibile de bonificație. Asocierea încrucișată produce 455 de rânduri (produsul 91 și 5).

După cum vă puteți imagina, unirile încrucișate neintenționate pot crea un număr enorm de rânduri în rezultatele interogării. În plus, aceste rezultate sunt în general lipsite de sens, deoarece dacă nu intenționați de fapt să combinați fiecare rând cu fiecare rând, majoritatea rândurilor combinate care apar în rezultate nu vor avea sens. În sfârșit, interogările care utilizează asocieri încrucișate neintenționate pot dura foarte mult timp.

Asociere încrucișată neintenționată în vizualizarea Proiectare

1. Câmpurile încercuite trebuie să fie unite între ele.

Produs de asociere neintenționată

1. Rețineți numărul foarte mare de înregistrări.

Rezultatul corectat al interogării

1. Rețineți că numărul de înregistrări este mult mai mic.

Începutul paginii

Unirea tabelelor pe baza unei inegalități între valorile de câmp

Unirile nu trebuie să se bazeze pe echivalența câmpurilor asociate. O asociere se poate baza pe orice operator de comparație, cum ar fi mai mare decât (>), mai mic decât (<) sau nu este egală cu (<>). Unirile care nu se bazează pe echivalență se numesc asocieri inegale.

Dacă doriți să combinați rândurile a două surse de date pe baza valorilor de câmp care nu sunt egale, utilizați o asociere inegală. De obicei, unirile inegale se bazează pe operatorii de comparație mai mari decât (>), mai mici decât (<), mai mari sau egale cu (>=) sau mai mici sau egale cu (<=). Unirile inegale care se bazează pe operatorul nu este egal cu (<>) pot returna aproape la fel de multe rânduri ca asocieri încrucișate, iar rezultatele pot fi dificil de interpretat.

Cum utilizez o asociere inegală?

Unirile inegale nu sunt acceptate în Vizualizarea proiect. Dacă doriți să le utilizați, trebuie să faceți acest lucru utilizând vizualizarea SQL. Cu toate acestea, puteți să creați o asociere în Vizualizarea proiect, să comutați la vizualizarea SQL, să găsiți operatorul de comparație egal (=) și să-l schimbați cu operatorul pe care doriți să-l utilizați. După ce faceți acest lucru, puteți deschide din nou interogarea doar în vizualizarea Proiect dacă mai întâi modificați operatorul de comparație înapoi la (=) în vizualizarea SQL.

Ștergerea unei asocieri

Dacă Access creează automat o asociere pe care nu o doriți sau dacă creați o asociere din greșeală, de exemplu, o asociere între două câmpuri cu tipuri de date diferite, puteți șterge asocierea.

  1. În grila de proiectare a interogării, faceți clic pe asocierea pe care doriți să o eliminați.

  2. Apăsați DELETE.

-sau-

  • În grila de proiectare a interogării, faceți clic dreapta pe asocierea pe care doriți să o eliminați, apoi faceți clic pe Ștergere.

Începutul paginii

Adăugarea înregistrărilor la un tabel utilizând o interogare de adăugare

Combinați rezultatele mai multor interogări de selectare utilizând o interogare de uniune

Creați o interogare bazată pe mai multe tabele

Creați, editați sau ștergeți o relație

Aveți nevoie de ajutor suplimentar?

Doriți mai multe opțiuni?

Explorați avantajele abonamentului, navigați prin cursurile de instruire, aflați cum să vă securizați dispozitivul și multe altele.

Comunitățile vă ajută să adresați întrebări și să răspundeți la întrebări, să oferiți feedback și să primiți feedback de la experți cu cunoștințe bogate.