Utilizarea unei interogări de tip uniune pentru a combina mai multe interogări într-un singur rezultat

Utilizarea unei interogări de tip uniune pentru a combina mai multe interogări într-un singur rezultat

Important: Acest articol este tradus automat, consultați exonerarea de răspundere. Versiunea în limba engleză a acestui articol se poate găsi aici pentru referință.

Să presupunem că baza de date Access are două tabele neasociate-unul care stochează datele clienților și altul care stochează datele despre furnizorii – și ambele tabele au un câmp informații de contact. Doriți să vedeți informațiile de contact din ambele tabele într-o vizualizare. Pentru a face acest lucru, mai întâi, creați o interogare de selectare pentru fiecare tabel pentru a regăsi informații de contact și apoi combină acele rezultate prin crearea unei interogări de uniune.

Notă: Conținutul din acest articol este destinat pentru utilizare cu bazele de date desktop Access. Nu puteți crea sau utilizați o interogare de Uniune în bazele de date web Access sau aplicațiile web Access.

Aveți nevoie să recapitulați crearea de interogări de selectare bază? Consultați crearea unei interogări de selectare simplă.

Mai întâi, iată câteva aspecte de reținut în legătură cu crearea unei interogări de uniune:

  • Interogările de selectare pe care le combinați într-o interogare de uniune trebuie să aibă același număr de câmpuri de ieșire, în aceeași ordine și cu aceleași tipuri de date sau cu tipuri de date compatibile. Când rulați o interogare de uniune, datele din fiecare set de câmpuri corespunzătoare sunt combinate într-un singur câmp de ieșire, astfel încât ieșirea interogării să aibă același număr de câmpuri ca fiecare dintre instrucțiunile SELECT.

  • O interogare de uniune este specifică SQL, prin urmare, trebuie scrisă direct în SQL. Comutați la Vizualizarea SQL pentru a scrie interogări specifice SQL, inclusiv interogări de uniune.

Pasul 1: Crearea interogărilor de selectare

Notă: Deși este posibil să includeți mai multe tabele sau interogări într-o interogare, această procedură presupune că fiecare interogare de selectare include date dintr-un singur tabel.

  1. În fila Creare, în grupul Interogări, faceți clic pe Proiectare interogare.

  2. În caseta de dialog Afișare tabel, faceți dublu clic pe tabelul care are câmpurile pe care doriți să le includeți. Tabelul se adaugă la fereastra de proiectare a interogării.

  3. Închideți caseta de dialog Afișare tabel.

  4. În fereastra de proiectare a interogării, faceți dublu clic pe fiecare dintre câmpurile pe care doriți să le includeți.
    Pe măsură ce selectați câmpurile, asigurați-vă că adăugați același număr de câmpuri, în aceeași ordine, așa cum adăugați și la celelalte interogări de selectare. Dați mare atenție tipurilor de date din câmpuri și asigurați-vă că ele au tipuri de date compatibile cu câmpurile din aceeași poziție din celelalte interogări pe care le combinați. De exemplu, dacă prima interogare de selectare are cinci câmpuri, dintre care primul conține date de tipul dată/oră, asigurați-vă că fiecare dintre celelalte interogări de selectare pe care le combinați au, de asemenea, cinci câmpuri, dintre care primul conține date de tipul dată/oră etc.

  5. Opțional, adăugați criterii la câmpuri tastând expresii adecvate în rândul criterii ale grilei de câmpuri.

  6. După ce ați terminat de adăugat câmpuri și criterii de câmpuri, ar trebui să rulați interogarea de selectare și să revizuiți rezultatul său. Pe fila proiectare , în grupul rezultate , faceți clic pe Run.

  7. Comutați interogarea la Vizualizarea proiect.

  8. Salvați interogarea de selectare și lăsați-o deschisă.

  9. Repetați acest procedeu pentru fiecare interogare de selectare pe care o combinați.

Pentru mai multe informații despre utilizarea criteriilor într-o interogare, consultați aplicarea criteriilor la o interogare.

Pasul 2: Combinarea interogărilor de selectare

În acest pas, creați interogarea de Uniune utilizând instrucțiunile SQL. (Pentru mai multe informații, consultați secțiunea sintaxa SQL , mai jos.)

  1. În fila Creare, în grupul Interogări, faceți clic pe Proiectare interogare.

  2. Închideți caseta de dialog Afișare tabel.

  3. În fila Proiect, în grupul Interogare, faceți clic pe Uniune.

Access ascunde fereastra de proiect a interogării și afișează fila obiect a Vizualizării SQL. În acest moment, fila obiect a Vizualizării SQL este goală.

  1. Faceți clic pe fila pentru prima interogare de selectare pe care doriți să o combinați în interogarea de uniune.

  2. Pe fila pornire , faceți clic pe Vizualizare > Vizualizare SQL.

  3. Copiați instrucțiunea SQL pentru interogarea de selectare. Faceți clic pe fila pentru interogarea de uniune pe care ați început să o creați în pasul 1.

  4. Lipiți instrucțiunea SQL pentru interogarea de selectare în fila obiect a Vizualizării SQL a interogării de uniune.

  5. Ștergeți punctul și virgula (;) de la finalul instrucțiunii SQL de interogare de selectare.

  6. Apăsați pe Enter pentru a muta cursorul o linie mai jos și tastați UNION linie nouă.

  7. Faceți clic pe fila pentru următoarea interogare de selectare pe care doriți să o combinați în interogarea de uniune.

  8. Repetați pașii de la 5 la 10 până ce copiați și lipiți toate instrucțiunile SQL pentru interogările de selectare în fereastra de vizualizare SQL a interogării de uniune. Nu ștergeți punctul și virgula și nu tastați nimic după instrucțiunea SQL pentru ultima interogare de selectare.

  9. În fila Proiectare, în grupul Rezultate, faceți clic pe Rulare.

Rezultatele interogării de uniune apar în vizualizare Foaie de date.

Începutul paginii

Sfaturi pentru utilizarea interogărilor de uniune

  • Pentru a distinge ce rânduri provin din anumite tabele, adăugați un șir de text ca un câmp în fiecare dintre instrucțiunile de selectare.

    De exemplu, dacă o instrucțiune de selectare regăsește câmpuri dintr-un tabel denumit Produse și alte instrucțiuni de selectare regăsesc câmpuri dintr-un tabel denumit Servicii, adăugați șirul „Produs” drept câmp la sfârșitul primei instrucțiuni și „Serviciu” la sfârșitul celei de-a doua instrucțiuni. De asemenea, puteți să atribuiți un alias de câmp (de exemplu, „tip”) la șiruri utilizând cuvântul cheie AS, după cum se arată în exemplul următor:

    SELECT field1, field2, ... "Product" AS type

    SELECT field1, field2, ... "Service" AS type

    Ieșirea interogării ar include un câmp denumit „tip” care afișează dacă rândul a provenit de la tabelul Produse sau de la tabelul Servicii.

  • Fiecare cuvânt cheie UNION combină instrucțiunile SELECT care îl precedă sau îl urmează imediat. Dacă utilizați cuvântul cheie ALL cu unele dintre cuvintele cheie UNION din interogare, dar nu și cu altele, rezultatele vor include rânduri dublate din perechile de instrucțiuni SELECT combinate prin utilizarea UNION ALL, dar nu vor include rândurile dublate din interogările SELECT combinate prin utilizarea UNION fără cuvântul cheie ALL.

  • Numărul, tipurile de date și ordinea câmpurilor din interogările de selectare trebuie să corespundă. Puteți utiliza expresii, cum ar fi calcule sau subinterogări, pentru a le face să corespundă.

    De exemplu, potriviți un câmp reprezentând anul prin două caractere cu un câmp reprezentând anul prin patru caractere, utilizând funcția Right pentru a extrage ultimele două cifre din cele patru care formează anul.

Utilizarea rezultatelor unei interogări de uniune pentru a crea un tabel nou

Mai întâi, utilizați interogarea de Uniune ca intrare pentru o nouă interogare de selectare, apoi utilizați această interogare de selectare ca bază pentru o interogare de tip creare tabel, așa cum se arată în pașii următori:

  1. Creați și salvați interogarea de uniune.

  2. În fila Creare, în grupul Interogări, faceți clic pe Proiectare interogare.

  3. În caseta de dialog Afișare tabel, faceți clic pe fila Interogări.

  4. Faceți dublu clic pe interogarea de uniune, apoi închideți caseta de dialog Afișare tabel.

    Notă: Dacă vedeți o avertizare de securitate în Bara de mesaje, înseamnă că este posibil ca interogările de acțiune să fie dezactivate. Pentru a activa interogările de acțiune, faceți clic pe Activare conținut în Bara de mesaje.

  5. În grila de proiect a interogării, pe fila obiect a interogării de uniune, faceți dublu clic pe asterisc (*) pentru a utiliza toate câmpurile interogării de uniune la crearea unui tabel nou.

  6. În fila Proiect, în grupul Tip interogare, faceți clic pe Creare tabel.

  7. În caseta de dialog Creare tabel, tastați un nume pentru tabelul nou.

  8. Opțional, specificați o altă bază de date în care să creați tabelul.

  9. Faceți clic pe OK.

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

Utilizarea unei interogări de uniune pentru a efectua o asociere externă completă

Aveți posibilitatea să utilizați o interogare de uniune pentru a efectua o unire externă completă. O asociere externă completă nu limitează rândurile returnate din oricare dintre tabelele asociate, dar combină rândurile în baza valorilor din câmpul de asociere.

  1. Creați o interogare cu o asociere externă la stânga pentru câmpul pe care doriți să îl utilizați pentru o asociere 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 semnul punct și virgula de la capătul clauzei FROM, apoi apăsați pe Enter.

  5. Tastați UNIONși 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 asociere 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, schimbați LEFT JOIN cu RIGHT JOIN.

  8. Ștergeți semnul punct și virgula de la capătul celei de-a doua clauze FROM, apoi apăsați pe Enter.

  9. Adăugați o clauză WHERE care să specifice că valoarea câmpului de asociere este NULL în primul tabel listat în clauza FROM (tabelul de la 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 semnul punct și virgulă (;) la sfârșitul clauzei WHERE pentru a indica finalul interogării de uniune.

  11. Pe fila Proiectare, în grupul Rezultate, faceți clic pe Rulare.
    Rezultatele interogării de uniune apar în vizualizare Foaie de date.

Pentru mai multe informații, consultați asocierea tabelelor și interogărilor.

Începutul paginii

Cerințe și sintaxa SQL pentru o interogare de uniune

Câteva cerințe ale unei interogări de uniune

  • Interogările de selectare pe care le combinați într-o interogare de uniune trebuie să aibă același număr de câmpuri de ieșire, în aceeași ordine și cu aceleași tipuri de date sau cu tipuri de date compatibile. Când rulați o interogare de uniune, datele din fiecare set de câmpuri corespunzătoare sunt combinate într-un singur câmp de ieșire, astfel încât ieșirea interogării să aibă același număr de câmpuri ca fiecare dintre instrucțiunile SELECT.

    Notă: În scopul efectuării unei interogări de uniune, tipurile de date Număr și Text sunt compatibile.

  • O interogare de uniune este specifică SQL, prin urmare, trebuie scrisă direct în SQL. Comutați la Vizualizarea SQL pentru a scrie interogări specifice SQL, inclusiv interogări de uniune.

Sintaxa SQL a unei interogări de uniune

Într-o interogare de uniune, fiecare interogare de selectare (denumită și instrucțiune SELECT) are următoarele clauze:

Clauză

Conține o listă de…

SELECT

câmpuri care conțin datele pe care doriți să le regăsiți.

FROM

tabelele care conțin aceste câmpuri.

WHERE opțional

criteriile pentru aceste câmpuri.

Instrucțiunile SELECT sunt combinate utilizând cuvântul cheie UNION.

Sintaxa SQL de bază pentru o interogare de uniune arată astfel:

SELECT field_1[, field_2,…]
FROM table_1[, table_2,…]
UNION [ALL]
SELECT field_a[, field_b,...]
FROM table_a[, table_b,…];

De exemplu, dacă baza dvs. de date are un tabel denumit Produse și alt tabel denumit Servicii și ambele tabele au câmpuri care conțin numele produsului sau serviciului, prețul, disponibilitatea acordului de garanție sau a asigurării de calitate și dacă oferiți produsul sau serviciul în mod exclusiv. Chiar dacă tabelul Produse stochează informații despre garanție și tabelul Servicii stochează informații despre asigurarea calității, informațiile de bază sunt aceleași (dacă un anumit produs sau serviciu este livrat cu o garanție de calitate). Aveți posibilitatea să utilizați o interogare de uniune, cum este următoarea, pentru a combina cele patru câmpuri din cele două tabele:

SELECT name, price, warranty_available, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee_available, exclusive_offer
FROM Services;

Să examinăm exemplul de sintaxă precedent, rând cu rând:

Sintaxă

Explicație

Informații suplimentare

SELECT nume, preț, garanție_disponibilă, ofertă_exclusivă

Prima clauză SELECT

SELECT este urmată de o listă de identificatori care indică toate câmpurile din care doriți să regăsiți date.

O clauză SELECT trebuie să listeze cel puțin un câmp.

Această clauză SELECT listează identificatorii de câmp nume, preț, garanție_disponibilă și ofertă_exclusivă.

FROM Produse

Prima clauză FROM

O clauză FROM urmează după o clauză SELECT și împreună formează o instrucțiune SELECT de bază.

FROM este urmată de o listă de identificatori ce indică tabelele care conțin câmpurile listate în clauza SELECT.

O clauză FROM trebuie să listeze cel puțin un tabel.

Această clauză FROM listează identificatorul de tabel Produse.

UNION ALL

Cuvântul cheie UNION și cuvântul cheie opțional ALL

Rezultatele instrucțiunii SELECT care precedă instrucțiunea UNION sunt combinate cu rezultatele instrucțiunii SELECT care urmează după UNION.

Când utilizați cuvântul cheie ALL, rândurile dublate nu sunt eliminate din rezultatele interogării de uniune.

Utilizând cuvântul cheie ALL, interogarea poate rula mai rapid, deoarece Access nu trebuie să verifice rândurile dublate.

Utilizați cuvântul cheie ALL dacă oricare dintre condițiile următoare este adevărată:

  • Sunteți sigur că interogările de selectare nu vor produce niciun rând dublat.

  • Nu contează pentru dvs. dacă rezultatele au rânduri dublate.

  • Doriți să vedeți rânduri dublate.

SELECT nume, preț, asigurarecalitate_disponibilă, ofertă_exclusivă

A doua clauză SELECT

Câteva reguli:

  • A doua clauză SELECT trebuie să aibă același număr de câmpuri ca prima clauză SELECT.

  • Câmpurile care partajează date comune trebuie să apară în aceeași ordine în clauză.

  • Câmpurile care partajează date comune trebuie să aibă același tip de date sau tipuri de date compatibile.

Notă: Numele câmpurilor din ieșirea unei interogări de uniune sunt preluate din prima clauză SELECT. Așadar, în exemplul nostru, datele din câmpul „garanție_disponibilă” și din câmpul „asigurarecalitate_disponibilă” se numesc „garanție_disponibilă” în ieșirea de interogare.

FROM Servicii

A doua clauză FROM

Nu există restricții în privința tabelelor din clauzele FROM ale unei interogări de uniune. Puteți să creați o interogare de uniune care utilizează aceleași tabele în fiecare clauză FROM. În clauzele FROM pot apărea mai multe tabele. În exemplul nostru, fiecare clauză FROM are un singur tabel.

Începutul paginii

Notă: Exonerare de răspundere pentru traducere automată: Acest articol a fost tradus de un sistem computerizat, fără intervenție umană. Microsoft oferă aceste traduceri automate pentru a ajuta utilizatorii vorbitori de alte limbi decât engleza să beneficieze de conținutul despre produsele, serviciile și tehnologiile Microsoft. Pentru că articolul a fost tradus de un computer, poate conține erori de vocabular, sintaxă sau gramatică.

Extindeți-vă competențele
Explorați instruirea
Fiți primul care obține noile caracteristici
Alăturați-vă utilizatorilor Office Insider

Au fost utile aceste informații?

Vă mulțumim pentru feedback!

Vă mulțumim pentru feedback! Se pare că ar fi util să luați legătura cu unul dintre agenții noștri de asistență Office.

×