Združevanje več tabel v en rezultat s poizvedbo za združevanje

Združevanje več tabel v en rezultat s poizvedbo za združevanje

Opomba:  Najnovejšo vsebino pomoči v vašem jeziku vam želimo zagotoviti v najkrajšem možnem času. Ta stran je bila prevedena z avtomatizacijo in lahko vsebuje slovnične napake ali nepravilnosti. Naš namen je, da bi bila vsebina za vas uporabna. Ali nam lahko na dnu te strani sporočite, ali so bile informacije za vas uporabne? Tukaj je angleški članek za preprosto referenco.

Včasih boste morda želite seznam zapisov iz ene tabele ali poizvedbe s tistimi iz enega ali več drugih tabel tako sestavijo eno naboru zapisov – seznam z vse zapise iz dveh ali več tabel. To je namen poizvedbe za združevanje v Accessu.

Če želite učinkovito razumeti poizvedbah za združevanje, morate biti najprej seznanjeni z načrtovanjem osnovnih poizvedb za izbiranje v Accessu. Če želite več informacij o oblikovanju poizvedb za izbiranje, si oglejte Ustvarjanje preproste poizvedbe za izbiranje.

Opomba: Vsebina v tem članku je namenjen za uporabo s Accessove namizne zbirke podatkov. Ni mogoče ustvariti ali uporabite poizvedbo za združevanje dostop do spletnih zbirkah podatkov ali v programih Access web app.

Študija primer poizvedbe za združevanje

Če nikoli ne ustvarite poizvedbo za združevanje pred, boste morda koristno, če prva študija primer v Northwind Accessove predloge. Iščete lahko Northwind vzorčne predloge na pridobivanje začel strani dostop tako, da kliknete Datoteka > novo ali pa neposredno lahko prenesete kopijo na tem mestu: Northwind vzorčne predloge.

Ko Access odpre zbirko podatkov Northwind, zaprete pogovorno okno obrazec za prijavo, da najprej se prikaže, in nato razširite podokno za krmarjenje. Kliknite na vrhu podokna za krmarjenje in nato izberite Vrsto predmeta za organiziranje vse predmete zbirke podatkov po vrsti. Nato se razširi skupino poizvedb in videli boste poizvedbo, ki se imenuje Transakcije izdelkov.

Poizvedbe za združevanje so enostavno loči od druge predmete, poizvedbe, ker so imajo posebno ikono, ki je podobna dva prepletajo krogov iz dveh nizov, ki predstavlja nabor Združenega:

Posnetek zaslona ikone za poizvedbo za združevanje v Accessu.

Za razliko od navaden izberite in poizvedbe za dejanja tabele niso povezane v poizvedbi za združevanje, kar pomeni, da Access grafike poizvedb ni mogoče uporabiti za ustvarjanje ali urejanje poizvedbe za združevanje. Tako boste izkušnje če zaženete poizvedbo za združevanje iz podokna za krmarjenje; Access odpre in prikažete rezultate v pogledu podatkovnega lista. Pod ukaz pogledi na zavihku »osnovno« , boste opazili, da Pogled načrta ni na voljo, ko delate z poizvedbah za združevanje. Le lahko preklapljate med SQL pogleduPodatkovnega lista in pri delu z poizvedbah za združevanje.

Če želite nadaljevati svoje študije v tem primeru poizvedbe za združevanje, kliknite osnovno > pogled > Pogled SQL , če si želite ogledati sintaksa SQL, ki ga določa. Na tej sliki, smo dodali nekaj dodatnih razmik v SQL tako, da lahko vidite različne dele, ki tvorijo poizvedbe za združevanje.

Vizualni primer poizvedbe za združevanje v pogledu SQL iz Northwind Vzorčne Accessove predloge.

Poglejmo študija sintaksa SQL to poizvedbo za združevanje iz zbirke podatkov Northwind podrobnosti:

SELECT [Product ID], [Order Date], [Company Name], [Transaction], [Quantity]
FROM [Product Orders]

UNION

SELECT [Product ID], [Creation Date], [Company Name], [Transaction], [Quantity]
FROM [Product Purchases]

ORDER BY [Order Date] DESC;

Prvi in tretji deli to izjavo SQL so v bistvu dveh poizvedb za izbiranje. Te poizvedbe pridobiti dveh različnih skupin zapisov; ena od tabeli Naročila izdelkov in nekaj iz tabele Nakupov izdelka .

Drugi del to izjavo SQL je ključno besedo UNION , ki pove Accessu, da bo to poizvedbo združevanje teh dveh nizov zapisov.

V zadnjem delu to izjavo SQL določa naročanje Združene zapise tako, da uporabite izjavo ORDER BY . V tem primeru bo Access za vse zapise tako, da polje Datum naročila v padajočem vrstnem redu.

Opomba: Poizvedbe za združevanje so vedno samo za branje v programu Access; ni mogoče spremeniti nobenih vrednosti v pogledu podatkovnega lista.

Ustvarjanje poizvedbe za združevanje z ustvarjanjem in združevanje poizvedb za izbiranje

Čeprav lahko ustvarite poizvedbo za združevanje, tako, da neposredno pisanje sintaksa SQL v pogledu SQL, boste morda lažje ustvariti v delih z poizvedb za izbiranje. Lahko nato kopirajte in prilepite SQL delov Združene poizvedbe za združevanje.

Če želite preskočiti navodila za branje in namesto Oglejte si primer, si oglejte naslednji odsek, Oglejte si primer ustvarjanje poizvedbe za združevanje.

  1. Na zavihku Ustvari v skupini Poizvedbe kliknite Načrt poizvedbe.

  2. V pogovornem oknu Pokaži tabelo dvokliknite tabelo s polji, ki jih želite vključiti. Tabela se doda v okno z načrtom poizvedbe.

  3. Zaprite pogovorno polje Pokaži tabelo.

  4. V oknu načrt poizvedbe, dvokliknite vsako polje, ki jih želite vključiti. Ko izberete polja, se prepričajte, da dodate enako število polj, v enakem vrstnem redu, da dodate druge poizvedbe za izbiranje. Bodite pozorni na podatkovni tipi polja in se prepričajte, da so združljivi podatkovni tipi s polji v istem položaju, poizvedbe, ki ga želite združiti. Na primer, če vaš prvi poizvedbe za izbiranje pet polja, prvi, ki vsebuje podatke, datum/čas, preverite, ali vse druge izberite poizvedbe, ki so združeni tudi pet področij, prvi, ki vsebuje podatke, datum/čas, in tako dalje.

  5. Po želji lahko dodate pogoje, da tako, da vnesete ustrezne izraze v vrstico pogoji mreže polja.

  6. Ko ste končali z dodajanjem polj in pogojev polj, zaženite poizvedbo za izbiranje in preglejte njen prikaz. Na zavihku načrt v skupini Rezultati kliknite Zaženi.

  7. Preklopite poizvedbo na pogled načrta.

  8. Shranite poizvedbo za izbiranje in jo pustite odprto.

  9. Ta postopek ponovite za vse poizvedbe za izbiranje, ki jih želite združiti.

Zdaj, ko ste ustvarili poizvedbe za izbiranje, je čas, da jih združite. V tem koraku ustvarite poizvedbo za združevanje s kopiranjem in lepljenjem izjav SQL.

  1. Na zavihku Ustvari v skupini Poizvedbe kliknite Načrt poizvedbe.

  2. Zaprite pogovorno polje Pokaži tabelo.

  3. Na zavihku načrt v skupini poizvedbe kliknite združevanje. Access skrije okno načrt poizvedbe, in prikaže zavihek predmeta za pogled SQL. Na tej točki na zavihek predmeta SQL pogled je prazen.

  4. Kliknite zavihek prve poizvedbe za izbiranje, ki jo želite združiti v poizvedbo za združevanje.

  5. Na zavihku »osnovno« kliknite pogled > Pogled SQL.

  6. Kopiranje izjavo SQL poizvedbe za izbiranje. Kliknite zavihek za poizvedbo za združevanje, ki ste ga začeli prej ustvariti.

  7. Prilepite izjavo SQL poizvedbe za izbiranje na zavihek predmeta za pogled SQL poizvedbe za združevanje.

  8. Izbrišite podpičje (;) na koncu izjave SQL poizvedbe za izbiranje.

  9. Pritisnite Enter, da premaknete kazalec eno vrstico navzdol in v novo vrstico vnesite UNION.

  10. Kliknite zavihek naslednje poizvedbe za izbiranje, ki jo želite združiti v poizvedbo za združevanje.

  11. Ponavljate korake od 5 do 10 tega postopka, dokler niste kopirali in prilepili vseh izjav SQL poizvedb za izbiranje v okno »Pogled SQL« poizvedbe za združevanje. Ne izbrišite podpičja oz. ne vnesite ničesar za izjavo SQL, ki pripada zadnji poizvedbi za izbiranje.

  12. Na zavihku Načrt v skupini Rezultati kliknite Zaženi.

Rezultati poizvedbe za združevanje so prikazani v pogledu podatkovnega lista.

Oglejte si primer ustvarjanje poizvedbe za združevanje

Tukaj je primer, ki ga lahko znova ustvarite v vzorčno zbirko podatkov Northwind. To poizvedbo za združevanje zbira imena oseb, s tabelo »stranke« in jih združi z imeni osebe iz tabele dobavitelji . Če želite slediti skupaj, delo s temi navodili v kopije vzorčno zbirko podatkov Northwind.

Vizualni primer ustvarjanje poizvedbe za združevanje v Northwind Vzorčne Accessove predloge.

Tu so koraki treba ustvariti v tem primeru:

  1. Ustvarjanje dveh poizvedb za izbiranje, imenovano Query1 in Query2 s tabelami, stranke in izdelki oziroma kot vire podatkov. Uporabite ime in priimek polja kot prikaz vrednosti.

  2. Ustvarite novo poizvedbo, imenovano Query3 z brez vira podatkov na začetku in nato združevanje ukaz na zavihku »načrt« , če želite spremeniti to poizvedbo v poizvedbi za združevanje.

  3. Kopiranje in lepljenje izjav SQL iz Query1 in Query2 v Query3. Se prepričajte, da odstranite dodatne podpičje in dodajte v ključno besedo UNION. Nato lahko preverite rezultate v pogledu podatkovnega lista.

  4. Dodajanje v naročanje stavek v eni od poizvedbe in nato prilepite izjavo vrstnem redu tako, da v poizvedbo za združevanje pogled SQL. Obvestilo, da v Query3, poizvedbo za združevanje, ko naročanje bo kmalu dodana, najprej podpičja odstranijo, nato pa v tabeli ime od imen polj.

  5. Končno SQL, ki združi in razvrsti imena, na primer te poizvedbe za združevanje je to:

    SELECT Customers.Company, Customers.[Last Name], Customers.[First Name]
    FROM Customers
    
    UNION
    
    SELECT Suppliers.Company, Suppliers.[Last Name], Suppliers.[First Name]
    FROM Suppliers
    
    ORDER BY [Last Name], [First Name];

Če menite, zelo pisanje sintaksa SQL, lahko zagotovo napisati svoje SQL izjava za združevanje poizvedbe neposredno v SQL pogled. Pa vam bo morda lažje slediti pristop za kopiranje in lepljenje SQL iz druge poizvedbe predmetov. Vsaka poizvedba lahko bolj zapleteno kot primeri preproste poizvedbe za izbiranje, ki uporablja tukaj. To je lahko izkoristite ustvarite in preskusite poizvedbe natančno preden jih združuje v poizvedbo za združevanje. Če poizvedbe za združevanje ni mogoče zagnati, lahko prilagodite vsaka poizvedba za posamezno dokler ne uspe in nato znova poizvedbe za združevanje s pravilnim sintakso.

Preglejte preostala razdelka v tem članku lahko preberete več namigi in nasveti o uporabi poizvedbe za združevanje.

V primeru v prejšnjem odseku z zbirko podatkov Northwind le podatki iz obeh tabel, ki so združeni. Vendar pa lahko združite tri tabel zelo preprosto v poizvedbi za združevanje. Na primer temelji na prejšnjem primeru, morda boste želeli tudi imen zaposlenih v rezultat poizvedbe. To opravilo lahko izvedete z dodajanjem tretji poizvedbe in združevanje s prejšnjo izjavo SQL z dodatno združevanje ključno besedo tako:

SELECT Customers.Company, Customers.[Last Name], Customers.[First Name]
FROM Customers

UNION

SELECT Suppliers.Company, Suppliers.[Last Name], Suppliers.[First Name]
FROM Suppliers

UNION

SELECT Employees.Company, Employees.[Last Name], Employees.[First Name]
FROM Employees

ORDER BY [Last Name], [First Name];

Ko si ogledate rezultat v pogledu podatkovnega lista, bodo navedeni vsi zaposleni z imenom podjetja vzorca, ki verjetno ni zelo uporabna. Če želite to polje, če želite označiti, če oseba, ki je notranje zaposleni, dobavitelja ali kupca, lahko vključite nespremenljive vrednosti namesto ime podjetja. Oglejte si, kako bi videti SQL:

SELECT "Customer" As Employment, Customers.[Last Name], Customers.[First Name]
FROM Customers

UNION

SELECT "Supplier" As Employment, Suppliers.[Last Name], Suppliers.[First Name]
FROM Suppliers

UNION

SELECT "In-house" As Employment, Employees.[Last Name], Employees.[First Name]
FROM Employees

ORDER BY [Last Name], [First Name];

Tukaj je, kako se bo pojavil rezultat v pogledu podatkovnega lista. Access prikaže teh pet primer zapisov:

Zaposlovanje

Priimek

Ime

Notranje

Kategorijo

Tina

Notranje

Giussani

Laura

Dobavitelja

Glasson

Stuart

Stranke

Goldschmidt

Daniel

Stranke

Gratacos Solsona

Antonio

Zgoraj poizvedbo lahko zmanjša še dodatno, ker Access prebere le imena izhodna polja iz prve poizvedbe v poizvedbi za združevanje. Tukaj boste videli smo odstranili rezultat poizvedbe drugi in tretji razdelkov:

SELECT "Customer" As Employment, [Last Name], [First Name]
FROM Customers

UNION

SELECT "Supplier", [Last Name], [First Name]
FROM Suppliers

UNION

SELECT "In-house", [Last Name], [First Name]
FROM Employees

ORDER BY [Last Name], [First Name];

V za dostop do poizvedbe za združevanje, razvrščanje lahko le enkrat pa vsaka poizvedba filtrirati je mogoče posamično. Gradnja v prejšnjem razdelku poizvedbo za združevanje, tukaj je primer, kjer smo možnosti filtriranja vsako poizvedbo tako, da dodate stavek WHERE.

SELECT "Customer" As Employment, Customers.[Last Name], Customers.[First Name]
FROM Customers
WHERE [State/Province] = "UT"

UNION

SELECT "Supplier", [Last Name], [First Name]
FROM Suppliers
WHERE [Job Title] = "Sales Manager"

UNION

SELECT "In-house", Employees.[Last Name], Employees.[First Name]
FROM Employees
WHERE City = "Seattle"

ORDER BY [Last Name], [First Name];

Preklopi na podatkovnem listu pogled in boste videli rezultate, ki je podobna tej:

Zaposlovanje

Priimek

Ime

Dobavitelja

Andersen

Elizabeth A.

Notranje

Kategorijo

Tina

Stranke

Hasselberg

Jonas

Notranje

Hellung Larsen

Ana

Dobavitelja

Hernandez Echevarria

Amaya

Stranke

Mortensen

Sven

Dobavitelja

Sandberg

Mikael

Dobavitelja

Zorko

Sonja

Notranje

Thorpe

Andrej

Dobavitelja

Weiler

Cornelia

Notranje

Inčuni

Robert

Če poizvedbe unijo zelo razlikujejo, lahko naletite položaj, kjer je rezultat polja mora združevanje podatkov različnih podatkovnih tipov. Če torej, poizvedbe za združevanje najbolj pogosto vrne rezultate, kot besedilne podatke vnesite od podatkovnega tipa lahko držite tipko obeh besedilo in številke.

Če želite izvedeti, kako to deluje, bomo uporabili poizvedbe za združevanje Transakcije izdelkov v vzorčno zbirko podatkov Northwind. Odprite to vzorčno zbirko podatkov in nato še izdelek transakcije poizvedbo v pogledu podatkovnega lista. Zadnjih deset zapisov bi moral biti podoben za ta rezultat:

ID izdelka

Datum naročila

Ime podjetja

Transakcije

Količina

77

22/1/2006

Dobavitelja B

Nakup

60

80

22/1/2006

Dobavitelj D

Nakup

75

81

22/1/2006

Dobavitelj A

Nakup

125

81

22/1/2006

Dobavitelj A

Nakup

200

7

20/1/2006

Podjetje D

Prodaja

10

51

20/1/2006

Podjetje D

Prodaja

10

80

20/1/2006

Podjetje D

Prodaja

10

34

1/15/2006

Podjetje AA

Prodaja

100

80

1/15/2006

Podjetje AA

Prodaja

30

Denimo, da želite razdeliti sporočilo polje Količina na dva - nakup in prodajo. Denimo tudi da želite imeti določeno vrednost v polju brez vrednosti nič. Tukaj je videz SQL za to poizvedbo za združevanje:

SELECT [Product ID], [Order Date], [Company Name], [Transaction], 0 As Buy, [Quantity] As Sell
FROM [Product Orders]

UNION

SELECT [Product ID], [Creation Date], [Company Name], [Transaction], [Quantity] As Buy, 0 As Sell
FROM [Product Purchases]

ORDER BY [Order Date] DESC; 

Če preklopite v pogled podatkovnega lista, se prikaže zadnjih deset zapisov zdaj prikazana kot je to:

ID izdelka

Datum naročila

Ime podjetja

Transakcije

Nakup

Prodaja

74

22/1/2006

Dobavitelja B

Nakup

20

0

77

22/1/2006

Dobavitelja B

Nakup

60

0

80

22/1/2006

Dobavitelj D

Nakup

75

0

81

22/1/2006

Dobavitelj A

Nakup

125

0

81

22/1/2006

Dobavitelj A

Nakup

200

0

7

20/1/2006

Podjetje D

Prodaja

0

10

51

20/1/2006

Podjetje D

Prodaja

0

10

80

20/1/2006

Podjetje D

Prodaja

0

10

34

1/15/2006

Podjetje AA

Prodaja

0

100

80

1/15/2006

Podjetje AA

Prodaja

0

30

Nadaljevanje v tem primeru, kaj, če želite polja z ničlo prazne? Spremenite SQL za prikaz nič namesto nič tako, da dodate v Null ključno besedo, kot je to:

SELECT [Product ID], [Order Date], [Company Name], [Transaction], Null As Buy, [Quantity] As Sell
FROM [Product Orders]

UNION

SELECT [Product ID], [Creation Date], [Company Name], [Transaction], [Quantity] As Buy, Null As Sell
FROM [Product Purchases]

ORDER BY [Order Date] DESC;

Vendar pa kot boste morda ugotovili, preklopite v pogled podatkovnega lista, zdaj imate nepričakovan rezultat. V stolpcu» nakup« počiščeno vsako polje:

ID izdelka

Datum naročila

Ime podjetja

Transakcije

Nakup

Prodaja

74

22/1/2006

Dobavitelja B

Nakup

77

22/1/2006

Dobavitelja B

Nakup

80

22/1/2006

Dobavitelj D

Nakup

81

22/1/2006

Dobavitelj A

Nakup

81

22/1/2006

Dobavitelj A

Nakup

7

20/1/2006

Podjetje D

Prodaja

10

51

20/1/2006

Podjetje D

Prodaja

10

80

20/1/2006

Podjetje D

Prodaja

10

34

1/15/2006

Podjetje AA

Prodaja

100

80

1/15/2006

Podjetje AA

Prodaja

30

Zakaj se to zgodi je zato, ker Access določa podatkovni tipi polj iz prve poizvedbe. V tem primeru »null «ni število.

Tako, kaj se zgodi, če poskusite in vstavite prazen niz za prazno vrednost polja? SQL za ta poskus, bo morda videti tako:

SELECT [Product ID], [Order Date], [Company Name], [Transaction], "" As Buy, [Quantity] As Sell
FROM [Product Orders]

UNION

SELECT [Product ID], [Creation Date], [Company Name], [Transaction], [Quantity] As Buy, "" As Sell
FROM [Product Purchases]

ORDER BY [Order Date] DESC;

Ko preklopite v pogled podatkovnega lista, boste videli, da Access pridobi nakup vrednosti, vendar vrednosti pretvori v besedilo. Vidite lahko, predstavljajo besedilne vrednosti, saj so v pogledu podatkovnega lista poravnane levo. Prazen niz v prve poizvedbe ni število, ki je razlog, zakaj se prikaže ta rezultat. Prav tako boste opazili, da prodaja vrednosti tudi so pretvorjena v besedilo, ker nakup zapisi vsebujejo prazen niz.

ID izdelka

Datum naročila

Ime podjetja

Transakcije

Nakup

Prodaja

74

22/1/2006

Dobavitelja B

Nakup

20

77

22/1/2006

Dobavitelja B

Nakup

60

80

22/1/2006

Dobavitelj D

Nakup

75

81

22/1/2006

Dobavitelj A

Nakup

125

81

22/1/2006

Dobavitelj A

Nakup

200

7

20/1/2006

Podjetje D

Prodaja

10

51

20/1/2006

Podjetje D

Prodaja

10

80

20/1/2006

Podjetje D

Prodaja

10

34

1/15/2006

Podjetje AA

Prodaja

100

80

1/15/2006

Podjetje AA

Prodaja

30

Kako ga rešiti to preizkus?

Rešitev je vsiliti poizvedbe lahko pričakuje vrednost polja, če želite biti številka. To je mogoče doseči z izraz:

IIf(False, 0, Null)

Pogoj za preverjanje, False, se nikoli ne bo True, tako izraz vedno vrne Null, vendar dostop še vedno ovrednoti obe možnosti izhoda in določi rezultat številskih ali ničelna.

Tukaj je, kako lahko uporabite ta izraz v našem primeru delo:

SELECT [Product ID], [Order Date], [Company Name], [Transaction], IIf(False, 0, Null) As Buy, [Quantity] As Sell
FROM [Product Orders]

UNION

SELECT [Product ID], [Creation Date], [Company Name], [Transaction], [Quantity] As Buy, Null As Sell
FROM [Product Purchases]

ORDER BY [Order Date] DESC;

Upoštevajte, da ni treba spremeniti druge poizvedbe.

Če preklopite v pogled podatkovnega lista, boste videli zdaj rezultat, ki smo želeli:

ID izdelka

Datum naročila

Ime podjetja

Transakcije

Nakup

Prodaja

74

22/1/2006

Dobavitelja B

Nakup

20

77

22/1/2006

Dobavitelja B

Nakup

60

80

22/1/2006

Dobavitelj D

Nakup

75

81

22/1/2006

Dobavitelj A

Nakup

125

81

22/1/2006

Dobavitelj A

Nakup

200

7

20/1/2006

Podjetje D

Prodaja

10

51

20/1/2006

Podjetje D

Prodaja

10

80

20/1/2006

Podjetje D

Prodaja

10

34

1/15/2006

Podjetje AA

Prodaja

100

80

1/15/2006

Podjetje AA

Prodaja

30

Nadomestna način doseči enak rezultat je spredaj dodajte znak poizvedbe v poizvedbo za združevanje še drugo poizvedbo:

SELECT 
    0 As [Product ID], Date() As [Order Date], 
    "" As [Company Name], "" As [Transaction], 
    0 As Buy, 0 As Sell
FROM [Product Orders]
WHERE False

Za vsako polje, Access vrne nespremenljivih vrednosti vrste podatkov, ki jo določite. Seveda pa ne želite rezultat poizvedbe, da ovira rezultate tako, da trik, če se želite izogniti, ki vključuje stavek WHERE FALSE:

WHERE False

To je mali trik, saj to je vedno false in nato poizvedbe ne vrne ničesar. Združevanje to izjavo z obstoječo SQL in smo prispejo dokončana izjava takole:

SELECT 
    0 As [Product ID], Date() As [Order Date], 
    "" As [Company Name], "" As [Transaction], 
    0 As Buy, 0 As Sell
FROM [Product Orders]
WHERE False

UNION

SELECT [Product ID], [Order Date], [Company Name], [Transaction], Null As Buy, [Quantity] As Sell
FROM [Product Orders]

UNION

SELECT [Product ID], [Creation Date], [Company Name], [Transaction], [Quantity] As Buy, Null As Sell
FROM [Product Purchases]

ORDER BY [Order Date] DESC;

Opomba: Združene poizvedbe tukaj v tem primeru z zbirko podatkov Northwind vrne 100 zapisov, med dveh posameznih poizvedb vrne 58 in 43 zapise skupaj 101 zapisov. Razlog za to razliko, ker dva zapisa niso enolične. V razdelku, delo z razlikovalnih zapisov v poizvedbah za združevanje z UNION ALL, če želite izvedeti, kako odpravite ta scenarij z UNION ALL.

Poseben primer poizvedbe za združevanje je združiti naboru zapisov z enim zapisom, ki vsebuje vsoto enega ali več polj.

Tukaj je še en primer, ki jih lahko ustvarite v vzorčno zbirko podatkov Northwind za ponazoritev, kako pridobiti skupno v poizvedbi za združevanje.

  1. Ustvarite novo poizvedbo preprosto, če si želite ogledati nakup piva (ID izdelka = 34 v zbirko podatkov Northwind) uporabite to sintakso SQL:

    SELECT [Purchase Order Details].[Date Received], [Purchase Order Details].Quantity
    FROM [Purchase Order Details]
    WHERE ((([Purchase Order Details].[Product ID])=34))
    
    ORDER BY [Purchase Order Details].[Date Received];
  2. Preklopi na podatkovnem listu pogled in jo bi morali videti štiri nakupov:

    Datum, ki ste jih prejeli

    Količina

    22/1/2006

    100

    22/1/2006

    60

    4/4/2006

    50

    5/4/2006

    300

  3. Pridobiti skupno ustvarjanje preproste zbiranje poizvedbe z uporabo tega SQL:

    SELECT Max([Date Received]), Sum([Quantity]) AS SumOfQuantity
    FROM [Purchase Order Details]
    WHERE ((([Purchase Order Details].[Product ID])=34))
  4. Preklopi na podatkovnem listu pogled in jo bi morali videti le en zapis:

    MaxOfDate, ki ste jih prejeli

    VsotaKoličine

    5/4/2006

    510

  5. Združevanje teh dveh poizvedb v poizvedbi za združevanje dodate zapis s skupno količino nakup zapisov:

    SELECT [Purchase Order Details].[Date Received], [Purchase Order Details].Quantity
    FROM [Purchase Order Details]
    WHERE ((([Purchase Order Details].[Product ID])=34))
    
    UNION
    
    SELECT Max([Date Received]), Sum([Quantity]) AS SumOfQuantity
    FROM [Purchase Order Details]
    WHERE ((([Purchase Order Details].[Product ID])=34))
    
    ORDER BY [Purchase Order Details].[Date Received];
  6. Preklopi na podatkovnem listu pogled in jo bi morali videti štiri nakupov z vsoto posameznih sledi zapis, ki sešteje količino:

    Datum, ki ste jih prejeli

    Količina

    22/1/2006

    60

    22/1/2006

    100

    4/4/2006

    50

    5/4/2006

    300

    5/4/2006

    510

Ki zajema osnove za dodajanje vsot v poizvedbi za združevanje. Lahko tudi želite vključiti nespremenljivih vrednosti v obeh poizvedbe, na primer »Podrobnosti« in »Skupno« , da vizualno ločiti skupno zapis z drugimi zapisi. Si lahko ogledate uporabo nespremenljivih vrednosti v razdelku Združi tri ali več tabel ali poizvedb v poizvedbi za združevanje.

Poizvedbe za združevanje v programu Access privzeto prikazani le razlikovalne zapise. Toda kaj, če želite vključiti vse zapise? Še en primer morda uporabne tukaj.

V prejšnjem razdelku, smo pokazali ustvarjanje vsote v poizvedbi za združevanje. Spreminjanje to poizvedbo za združevanje SQL, da vključite ID izdelka = 48:

SELECT [Purchase Order Details].[Date Received], [Purchase Order Details].Quantity
FROM [Purchase Order Details]
WHERE ((([Purchase Order Details].[Product ID])=48))

UNION

SELECT Max([Date Received]), Sum([Quantity]) AS SumOfQuantity
FROM [Purchase Order Details]
WHERE ((([Purchase Order Details].[Product ID])=48))

ORDER BY [Purchase Order Details].[Date Received];

Preklopi na podatkovnem listu pogled in jo bi morali videti nekoliko zavajajoč rezultat:

Datum, ki ste jih prejeli

Količina

22/1/2006

100

22/1/2006

200

En zapis seveda ne poda dvakrat količina skupaj.

Razloga, se prikaže ta rezultat je zato, ker v en dan enako količino čokolade je bilo prodanih dvakrat -, kot je zapisana v tabeli podrobnosti naročila za nakup. Tukaj je preprosto poizvedbo za izbiranje rezultat, ki prikazuje obeh zapisov v vzorčno zbirko podatkov Northwind:

ID naročila za nakup

Izdelek

Količina

100

Northwind Traders čokolada

100

92

Northwind Traders čokolada

100

V poizvedbo za združevanje predhodno opozoriti, si lahko ogledate polje »ID naročila «, ki ni vključen in da dve polji ne sestavljajo dva različna zapisa.

Če želite vključiti vse zapise, uporabite UNION ALL namesto UNION v vašo SQL. To bo predvsem najverjetneje vplivajo na razvrščanje rezultatov, tako da boste morda želeli vključujejo tudi stavek ORDER BY, če želite določiti vrstni red razvrščanja. Tukaj je spremenjena SQL zgradbe izklop v prejšnjem primeru:

SELECT [Purchase Order Details].[Date Received], Null As [Total], [Purchase Order Details].Quantity
FROM [Purchase Order Details]
WHERE ((([Purchase Order Details].[Product ID])=48))

UNION ALL

SELECT Max([Date Received]), "Total" As [Total], Sum([Quantity]) AS SumOfQuantity
FROM [Purchase Order Details]
WHERE ((([Purchase Order Details].[Product ID])=48))

ORDER BY [Total];

Preklopi na podatkovnem listu pogled in jo bi morali videti vse podrobnosti poleg skupno kot zadnji zapis:

Datum, ki ste jih prejeli

Vsota

Količina

22/1/2006

100

22/1/2006

100

22/1/2006

Skupaj

200

Skupna uporaba poizvedbe za združevanje je kot vir zapisov za kontrolnik kombiniranega polja v obrazcu. Izberite vrednost za filtriranje zapisov v obrazcu, lahko uporabite to kombinirano polje. Na primer filtriranje zapisov zaposlenega glede na svoje mesto.

Če si želite ogledati, kako lahko to deluje, tukaj je še en primer, lahko ustvarite v vzorčno zbirko podatkov Northwind za ponazoritev tega scenarija.

  1. Ustvarjanje preproste poizvedbe za izbiranje, uporabite to sintakso SQL:

    SELECT Employees.City, Employees.City AS Filter
    FROM Employees;
  2. Preklopi na podatkovnem listu pogled in jo bi morali videti naslednje rezultate:

    Mesto

    Filter

    Seattle

    Seattle

    Portorož

    Portorož

    Redmond

    Redmond

    Kirkland

    Kirkland

    Seattle

    Seattle

    Redmond

    Redmond

    Seattle

    Seattle

    Redmond

    Redmond

    Seattle

    Seattle

  3. Si ogledate rezultate boste morda ne boste videli veliko vrednost. Čeprav razširite poizvedbe in pretvorite v poizvedbo za združevanje, z uporabo tega SQL:

    SELECT Employees.City, Employees.City AS Filter
    FROM Employees
    
    UNION
    
    SELECT "<All>", "*" AS Filter
    FROM Employees
    
    ORDER BY City;
  4. Preklopi na podatkovnem listu pogled in jo bi morali videti naslednje rezultate:

    Mesto

    Filter

    < vse >

    *

    Portorož

    Portorož

    Kirkland

    Kirkland

    Redmond

    Redmond

    Seattle

    Seattle

    Access izvede unijo devet zapisov, prej je prikazano, z vrednostmi nespremenljiva < vseh > in »* «.

    Ker ta stavek združevanje ne vsebuje UNION ALL, Access vrne le razlikovalne zapise kar pomeni vsako mesto vrne le enkrat z nespremenljivo enake vrednosti.

  5. Zdaj ko ste dokončane poizvedbe za združevanje, prikaz vsako ime mesta le enkrat, skupaj s možnost da učinkovito izbere vsa mesta, lahko uporabite te poizvedbe kot vir zapisov za kombinirano polje v obrazcu. V tem primeru določene uporablja kot model, lahko ustvarite kontrolnik kombiniranega polja v obrazcu, nastavite te poizvedbe kot vir zapisov, nastavite lastnost širine stolpca Filter stolpca na 0 (nič), če želite skriti, vizualno in nato nastavite lastnost vezani stolpec 1 kažejo indeks od drugega stolpca. V lastnosti Filter sam obrazec, nato lahko dodate v kodo, kot je to, da aktivirati obrazec filtra z uporabo vrednosti, kakšen je bil izbran v kontrolnik za kombinirano polje:

    Me.Filter = "[City] Like '" & Me![FilterComboBoxName].Value & "'"
    Me.FilterOn = True

    Uporabnik obrazca lahko nato filtriranje zapisov obrazca na določeno mesto ime ali izberite < vse > seznam vseh zapisov za vsa mesta.

Na vrh strani

Razširite poznavanje Officea
Oglejte si izobraževanje
Prvi dobite nove funkcije
Pridružite se programu Office Insider

Vam je bila informacija v pomoč?

Zahvaljujemo se vam za povratne informacije.

Zahvaljujemo se vam za povratne informacije. Videti je, da bi vam prišla prav pomoč enega od naših Officeovih agentov za podporo.

×