Korišćenje upita za združivanje radi kombinovanja više upita u jedan rezultat

Korišćenje upita za združivanje radi kombinovanja više upita u jedan rezultat

Napomena:  Želimo da vam što pre pružimo najnoviji sadržaj pomoći čim na vašem jeziku. Ova stranica je prevedena automatski i može da sadrži gramatičke greške ili netačnosti. Naš cilj je da ovaj sadržaj bude koristan. Možete li nam na dnu ove stranice saopštiti da li su vam informacije bile od koristi? Ovo je članak na engleskom jeziku za brzu referencu.

Ponekad možda ćete želeti da biste prikazali listu zapisa iz jedne tabele ili upita sa onima iz jednog ili više tabela da biste formirali jedan skup zapisa – lista sa sve zapise iz dve ili više tabela. Ovo je svrha upita za združivanje u programu Access.

Da biste efikasno razumeli upitima za združivanje, prvo treba upoznati sa dizajniranjem osnovnih upita za izdvajanje u programu Access. Više informacija o dizajniranju upita za izdvajanje potražite u članku Kreiranje jednostavnog upita za izdvajanje.

Napomena: Sadržaj u ovom članku je predviđena za korišćenje s Access bazama podataka na radnoj površini. Ne možete da kreirate ili koristite upit za združivanje u Access Veb baze podataka ili Access Veb aplikacije.

Proučavanje neke je primer radni upit za združivanje

Ako nikada ne kreirate upit za združivanje pre, možda vam biti korisno da prvo studiji radi primer u Northwind Access predložak. Možete da pronađete predložak uzorka Northwind na stranici "preuzimanje koraci" programa Access tako što ćete izabrati stavke datoteka > novo , ili direktno možete preuzeti kopiju sa ove lokacije: predloška uzorka Northwind.

Kada Access otvori bazu podataka Northwind, odbacili obrazac za prijavljivanje dijalog koji prvi put se pojavljuje, a zatim proširite okno za navigaciju. Kliknite na vrhu okna za navigaciju, a zatim izaberite Tip objekta za organizovanje objekata baze podataka po tipu. Dalje, razvijte grupi upiti i videćete upita koji se naziva Transakcije proizvoda.

Upiti za združivanje su lako se razlikuje od drugih objekata upita jer imaju specijalno ikona koja liči dva isprepleteni krugova koji predstavlja skup ujedinjeni iz dva skupa:

Snimak ekrana ikona upita za združivanje u programu Access.

Za razliku od normalne izbor i radni upiti, tabela nisu povezani u upitu za združivanje, što znači da Access dizajner grafike upita nije moguće koristiti za kreiranje ili uređivanje upitima za združivanje. Naiđete ovo ako otvorite upit za združivanje iz okna za navigaciju; Access otvara i prikazali rezultate u prikazu lista sa podacima. U okviru komande " Prikazi " na kartici Početak , primetićete da Prikaz dizajna nije dostupna kada radite sa upitima za združivanje. Možete samo se prebacivati između Prikaza lista sa podacima i SQL prikaz pri radu sa upitima za združivanje.

Da biste nastavili na proučavanje u ovom primeru upita za združivanje, izaberite stavke Početak > Prikazi > SQL prikaz da biste prikazali SQL sintaksa koji definiše ga. Na ovoj ilustraciji, dodali smo neke dodatni razmak u SQL tako da lako možete da vidite različite delove koji čine upita za združivanje.

Vizuelni primer upita za združivanje u SQL prikazu iz predloška Access uzorka Northwind.

Hajde proučavanje neke SQL sintaksa za ovaj upit za združivanje iz baze podataka Northwind detalja:

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 i treći delove ovaj SQL izraz su u osnovi dva upita za izdvajanje. Ovi upiti preuzeli dve različite skupove zapisa; jedna od na tabelu Porudžbine proizvoda i jednu od Kupovine proizvoda tabele.

Drugi deo ovaj SQL izraz je ključna reč UNION koji saopštava programu Access da ovaj upit će kombinovati ova dva skupa zapisa.

U poslednjem delu ovog SQL instrukciju određuje naručivanje kombinovane podatke pomoću izraza ORDER BY . U ovom primeru, Access će naručite sve zapise tako što ćete polje Datum porudžbine po opadajućem redosledu.

Napomena: Upiti za združivanje su uvek samo za čitanje u programu Access; Ne možete da promenite bilo koje vrednosti u prikazu lista sa podacima.

Kreiranje upita za združivanje kreiranjem i Kombinovanje upita za izdvajanje

Iako možete da kreirate upit za združivanje direktno pisanjem SQL sintaksa u SQL prikazu, možda će vam biti lakše da biste ga napravili u delovima pomoću upita za izdvajanje. Možete a zatim kopirajte i nalepite SQL delova u upitu za združivanje kombinovane.

Ako želite da preskočite korake za čitanje i umesto toga Pogledajte primer, pogledajte sledeći odeljak, Pogledajte primer izradu upita za združivanje.

  1. Na kartici Kreiranje, u grupi Upiti kliknite na dugme Dizajn upita.

  2. U dijalogu Prikazivanje tabele kliknite dvaput na tabelu koja sadrži polja koja želite da uključite. Tabela će biti dodata u prozor za dizajn upita.

  3. Zatvorite dijalog Prikazivanje tabele.

  4. U prozoru dizajna upita kliknite dvaput na svako polje koje želite da uključite. Prilikom izbora polja, uverite se da dodajete isti broj polja, istim redosledom, da dodate druge upita za izdvajanje. Obrati pažnju na tipove podataka polja i uverite se da imaju kompatibilne tipove podataka sa poljima u iste pozicije u upitima da kombinujete. Na primer, ako prvi upit za izdvajanje ima pet polja, prvi koji sadrži podatke datum/vreme, proverite da li svaka od drugih upita za izdvajanje koji kombinujete takođe ima pet polja, prvi koji sadrži podatke datum/vreme, i tako dalje.

  5. Opcionalno, dodajte kriterijume u polja tako što ćete otkucati odgovarajuću izraza u red kriterijumi polja koordinatne mreže.

  6. Kada završite sa dodavanjem polja i kriterijume polja, trebalo bi da pokrenete upit za izdvajanje i pregledate njegov rezultat. Na kartici Dizajn , u grupi Rezultati kliknite na dugme Pokreni.

  7. Prebacite upit na prikaz dizajna.

  8. Sačuvajte upit za izdvajanje i ostavite ga otvorenog.

  9. Ponovite ovu proceduru za svaki od upita za izdvajanje koje želite da kombinujete.

Sada kada ste kreirali upita za izdvajanje, vreme je da kombinujete. U ovom koraku kreirate upit za združivanje tako što ćete kopirati i nalepiti SQL instrukcije.

  1. Na kartici Kreiranje, u grupi Upiti kliknite na dugme Dizajn upita.

  2. Zatvorite dijalog Prikazivanje tabele.

  3. Na kartici Dizajn , u grupi upit kliknite na dugme združivanje. Access skriva prozora za dizajn upita i prikazuje karticu objekta SQL prikaz. U ovom trenutku, karticu objekta SQL prikaz je prazan.

  4. Izaberite karticu za prvi upit za izdvajanje koji želite da kombinujete u upitu za združivanje.

  5. Na kartici Početak izaberite stavku Prikaz > SQL prikaz.

  6. Kopirajte SQL izraz za upit za izdvajanje. Izaberite karticu za upit za združivanje koji ste započeli da biste kreirali ranije.

  7. Nalepite SQL instrukciju za upit za izdvajanje u karticu objekta u SQL prikazu upita za združivanje.

  8. Izbrišite znak tačka i zarez (;) na kraju SQL instrukcije upita za izdvajanje.

  9. Pritisnite taster Enter da biste premestili kursor jedan red nadole, a zatim otkucajte reč UNION u novom redu.

  10. Izaberite karticu za sledeći upit za izdvajanje koji želite da kombinujete u upitu za združivanje.

  11. Ponovite korake od 5. do 10. dok ne kopirate i nalepite sve SQL instrukcije za upite za izdvajanje u prozor SQL prikaza upita za združivanje. Nemojte brisati tačku i zarez niti kucati išta nakon SQL instrukcije za poslednji upit za izdvajanje.

  12. Na kartici Dizajn, u grupi Rezultati kliknite na dugme Pokreni.

Rezultati upita za združivanje pojavljuju se u prikazu lista sa podacima.

Pogledajte primer izradu upita za združivanje

Evo primera koji ne možete da kreirate u bazi podataka Northwind. Ovaj upit za združivanje prikuplja imena ljudi iz tabele " Kupci " i ih kombinuje sa imena ljudi iz tabele . Ako želite da pratite, prođite kroz ove korake u kopije bazi podataka Northwind.

Vizuelni primer izradu upita za združivanje u predlošku Access uzorka Northwind.

Evo koraka neophodna za izgradnju u ovom primeru:

  1. Kreirajte dva upita za izdvajanje koji se zove upit1 i upit2 sa tabele "Kupci" i "proizvodi odnosno kao izvore podataka. Koristite polja ime i prezime i da prikažu vrednosti.

  2. Kreirajte novi upit koji se zove Query3 bez izvora podataka u početku, a zatim izaberite stavku Union komande na kartici " Dizajn " da biste postavili ovaj upit u upitu za združivanje.

  3. Kopirajte i nalepite SQL izjave upit1 i upit2 u Query3. Uverite se da biste uklonili dodatne tačka i zarez i dodali u ključna reč UNION. Zatim možete da proverite rezultate u prikazu lista sa podacima.

  4. Dodavanje u redosleda odredba u jednu od upita, a zatim nalepite Odredba ORDER BY u upitu za združivanje SQL prikaz. Imajte u vidu da u Query3, upit za združivanje, kada je naručivanje će biti dodat, prvo na tačku i zarez se uklanjaju, a zatim imenujte tabelu iz imena polja.

  5. Konačno SQL koji kombinuje i sortira imena na primer ovaj upit za združivanje je sledeća:

    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];

Ako ste upoznati sa veoma pisanje SQL sintaksa svakako možete pisati sopstvene SQL izjavu za upit za združivanje direktno u SQL prikaz. Međutim, možda će vam biti korisno da biste pratili pristup za kopiranje i lepljenje SQL sa drugim objektima upita. Svaki upit može da bude mnogo komplikovanija od jednostavan upit za izdvajanje primeri koriste ovde. To može biti prednost za kreiranje i testiranje svaki upit pažljivo pre nego što ih kombinovati u upitu za združivanje. Ako upit za združivanje nije moguće pokrenuti, možete da prilagodite svaki upit pojedinačno dok ne uspeva i zatim ponovo združivanje sa ispravljenim sintaksu.

Pregledajte preostala odeljka u ovom članku da biste saznali više saveti i trikovi za upotrebu upita za združivanje.

U ovom primeru iz prethodnog odeljka koristite bazu podataka Northwind kombinuju se samo podatke iz dve tabele. Međutim, možete da kombinujete tri ili više tabela lako u upitu za združivanje. Na primer, zgrada u prethodnom primeru, možda ćete želeti da takođe sadrži imena zaposlenih u rezultat upita. Taj zadatak možete da izvršite pomoću dodavanja treći upita i sa prethodne SQL instrukciju sa sa dodatnim ključna reč UNION ovako:

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];

Kada prikazujete rezultat u prikazu lista sa podacima, svi zaposleni će biti navedeni uzorak ime preduzeća, koji verovatno nije vrlo korisno. Ako želite da polje da biste naznačili ako osoba je interne zaposlenog iz dobavljač ili klijenta, možete da uključite u fiksne vrednosti umesto ime preduzeća. Evo kako bi izgledalo 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];

Evo kako rezultat se pojavljuje u prikazu lista sa podacima. Access prikazuje ovih pet primer zapisa:

Zapošljavanje

Prezime

Ime

Interne

Freehafer

Nada

Interne

Giussani

Laura

Dobavljač

Glasson

Stjuarte

Klijent

Goldschmidt

Danijel

Klijent

Gratacos Solsona

Antonio

Upit iznad može dodatno smanjiti pošto Access samo čita imena polja za izlaz iz prvog upita u upitu za združivanje. Ovde ćete videti uklonili smo izlaz iz odeljcima drugom i trećem upita:

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];

U upit za združivanje pristup, naručivanje je dozvoljeno samo jednom, ali svaki upit mogu se filtrirati pojedinačno. Zgrada u prethodnom odeljku upit za združivanje, Evo primera gde ste filtrirali svaki upit tako što ćete dodati odredbu 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];

Prebacivanje na list sa podacima i prikaz videti rezultate slično ovome:

Zapošljavanje

Prezime

Ime

Dobavljač

Andersen

Elizabet A.

Interne

Freehafer

Nada

Klijent

Hasselberg

Jonas

Interne

Hellung Larsen

Ana

Dobavljač

Hernandez njega

Maya

Klijent

Mortensen

Sven

Dobavljač

Sandberg

Majkl

Dobavljač

Sovrlić

Luka

Interne

Torp

Stevan

Dobavljač

Vajler

Kornelija

Interne

Zare

Robert

Ako upita za združivanje razlikuju, možete naići situaciju gde polje izlaza mora da kombinujete podatke različitih tipova podataka. Ako je tako, upit za združivanje najčešće će vratiti rezultate kao tekstualne podatke upišite od da tip podataka mogu sadržati oba tekst i brojeve.

Da biste razumeli kako ovo funkcioniše, Koristićemo Proizvoda transakcije upita za združivanje u bazi podataka Northwind. Otvorite taj uzorak baze podataka, a zatim otvorite proizvoda transakcije upit u prikazu lista sa podacima. Poslednje deset zapise bi trebalo da bude sličan ovaj rezultat:

ID proizvoda

Datum porudžbine

Ime preduzeća

Transakcija

Količina

77

22/1/2006

Dobavljač B

Kupite

60

80

22/1/2006

Dobavljač D

Kupite

75

81

22/1/2006

Dobavljač A

Kupite

125

81

22/1/2006

Dobavljač A

Kupite

200

7

20/1/2006

Preduzeće D

Prod

10

51

20/1/2006

Preduzeće D

Prod

10

80

20/1/2006

Preduzeće D

Prod

10

34

1/15/2006

Preduzeće Anonimnih

Prod

100

80

1/15/2006

Preduzeće Anonimnih

Prod

30

Pretpostavimo da želite da razdelite prozor polja Količina na dva - kupi i primaoca. Pretpostavimo da želite da imate na fiksni nulte vrednosti za polje bez vrednosti. Evo kako će izgledati SQL za ovaj upit za združivanje:

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; 

Ako se prebacite u prikaz lista sa podacima, videćete poslednje 10 zapisa sada prikazuju kao što su sledeće:

ID proizvoda

Datum porudžbine

Ime preduzeća

Transakcija

Kupovina

Prodaje

74

22/1/2006

Dobavljač B

Kupite

20

0

77

22/1/2006

Dobavljač B

Kupite

60

0

80

22/1/2006

Dobavljač D

Kupite

75

0

81

22/1/2006

Dobavljač A

Kupite

125

0

81

22/1/2006

Dobavljač A

Kupite

200

0

7

20/1/2006

Preduzeće D

Prod

0

10

51

20/1/2006

Preduzeće D

Prod

0

10

80

20/1/2006

Preduzeće D

Prod

0

10

34

1/15/2006

Preduzeće Anonimnih

Prod

0

100

80

1/15/2006

Preduzeće Anonimnih

Prod

0

30

Nastavite u ovom primeru, ako želite polja sa nulom da bude prazna? Možete da izmenite SQL da biste prikazali ništa umesto nula tako što ćete dodati ključnu reč "null" kao što su sledeće:

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;

Međutim, i možda možete da se pridržavaju prebacivanje na prikaz lista sa podacima, sada imate neočekivane rezultate. U koloni "kupi" svako polje je opozvan izbor:

ID proizvoda

Datum porudžbine

Ime preduzeća

Transakcija

Kupovina

Prodaje

74

22/1/2006

Dobavljač B

Kupite

77

22/1/2006

Dobavljač B

Kupite

80

22/1/2006

Dobavljač D

Kupite

81

22/1/2006

Dobavljač A

Kupite

81

22/1/2006

Dobavljač A

Kupite

7

20/1/2006

Preduzeće D

Prod

10

51

20/1/2006

Preduzeće D

Prod

10

80

20/1/2006

Preduzeće D

Prod

10

34

1/15/2006

Preduzeće Anonimnih

Prod

100

80

1/15/2006

Preduzeće Anonimnih

Prod

30

To se dešava zato Access određuje tipove podataka polja iz prvog upita. U ovom primeru, "null" nije broj.

Šta se dešava ako umetnete praznu nisku za praznu vrednost polja? SQL za pokušaj mogla da izgleda na sledeći način:

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;

Kada se prebacite na prikaz lista sa podacima, videćete da Access preuzima kupi vrednosti, ali ga konvertuje vrednosti u tekst. Možete da vidite ovo su tekstualne vrednosti i oni su levo poravnat u prikazu lista sa podacima. Prazna niska iz prvog upita nije broj koji vidite rezultate. Takođe ćete primetiti i neke da prodaju vrednosti takođe konvertuju se u tekst jer kupovine zapisi sadrže praznu nisku.

ID proizvoda

Datum porudžbine

Ime preduzeća

Transakcija

Kupovina

Prodaje

74

22/1/2006

Dobavljač B

Kupite

20

77

22/1/2006

Dobavljač B

Kupite

60

80

22/1/2006

Dobavljač D

Kupite

75

81

22/1/2006

Dobavljač A

Kupite

125

81

22/1/2006

Dobavljač A

Kupite

200

7

20/1/2006

Preduzeće D

Prod

10

51

20/1/2006

Preduzeće D

Prod

10

80

20/1/2006

Preduzeće D

Prod

10

34

1/15/2006

Preduzeće Anonimnih

Prod

100

80

1/15/2006

Preduzeće Anonimnih

Prod

30

Kako da rešite ovu slagalicu?

Rešenje je da biste nametnuli upita da očekujete vrednost biti broj. To može da se postigne pomoću izraza:

IIf(False, 0, Null)

Uslov da biste proverili, False, će biti ispunjen, stoga izraz će uvek vratiti "null", ali Access i dalje procenjuje obe izlazne opcije i određuje izlaz numerički ili Null.

Evo kako možete da koristite ovaj izraz u našem primeru rad:

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;

Imajte na umu da to nije neophodno da izmenite drugog upita.

Ako se prebacite u prikaz lista sa podacima, videćete sada rezultat koji želite:

ID proizvoda

Datum porudžbine

Ime preduzeća

Transakcija

Kupovina

Prodaje

74

22/1/2006

Dobavljač B

Kupite

20

77

22/1/2006

Dobavljač B

Kupite

60

80

22/1/2006

Dobavljač D

Kupite

75

81

22/1/2006

Dobavljač A

Kupite

125

81

22/1/2006

Dobavljač A

Kupite

200

7

20/1/2006

Preduzeće D

Prod

10

51

20/1/2006

Preduzeće D

Prod

10

80

20/1/2006

Preduzeće D

Prod

10

34

1/15/2006

Preduzeće Anonimnih

Prod

100

80

1/15/2006

Preduzeće Anonimnih

Prod

30

Drugi oblik da biste postigli isti rezultat je prepend upite u upitu za združivanje sa još jednog upita:

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 svako polje, Access daje fiksne vrednosti koje definišete tipa podataka. Naravno, ne želite rezultat ovaj upit na rezultate tako da biste izbegli koji je da odredbu WHERE FALSE:

WHERE False

Ovo je malo prevara od ovo je uvek false, a zatim upit ne vraća sve. Kombinovanje izjavu o sa postojeće SQL smo stigli u izjavu o dovršenom na sledeći način:

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;

Napomena: U kombinovani upit u ovom primeru koristite bazu podataka Northwind daje 100 zapise, dok dva pojedinačnih upita dobili 58 i 43 zapisi za ukupno 101 zapisa. Razlog za to neslaganje zato dva zapisa nisu jedinstveni. Pogledajte odeljak, rad sa jedinstvene zapise u upitima za združivanje pomoću UNION ALL, da biste saznali kako da rešite ovaj scenario pomoću UNION ALL.

Poseban slučaj upita za združivanje je da kombinujete skup zapisa sa jedan zapis koji sadrži zbir jednog ili više polja.

Evo drugog primera koji možete da kreirate u bazi podataka Northwind ilustruje kako da nabavite ukupne vrednosti u upitu za združivanje.

  1. Kreirajte novi jednostavan upit da biste prikazali kupovine piva (ID proizvoda = 34 u bazi podataka Northwind) koristeći sledeću SQL sintaksu:

    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. Prebacivanje na list sa podacima i prikaz trebalo bi da vidite četiri kupovine:

    Datum prijema

    Količina

    22/1/2006

    100

    22/1/2006

    60

    4/4/2006

    50

    4/5/2006

    300

  3. Da biste dobili ukupno, Kreiranje jednostavnog aggregating upita koristeći sledeću SQL:

    SELECT Max([Date Received]), Sum([Quantity]) AS SumOfQuantity
    FROM [Purchase Order Details]
    WHERE ((([Purchase Order Details].[Product ID])=34))
  4. Prebacivanje na list sa podacima i prikaz trebalo bi da vidite samo jedan zapis:

    MaxOfDate primili

    SumOfQuantity

    4/5/2006

    510

  5. Ova dva upita da kombinujete u upitu za združivanje da biste dodali zapis sa ukupnu količinu kupovine zapise:

    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. Prebacivanje na list sa podacima i prikaz trebalo bi da vidite četiri nabavke sa zbir svakog praćeno zapisa koja sabira količine:

    Datum prijema

    Količina

    22/1/2006

    60

    22/1/2006

    100

    4/4/2006

    50

    4/5/2006

    300

    4/5/2006

    510

Koji pokriva Osnove dodavanja ukupne vrednosti u upitu za združivanje. Možda želite da uključite fiksnih vrednosti u oba upita kao što su „Detalj” i „Ukupno” za vizuelno razdvajanje ukupna zapis sa drugim zapisima. Možete da pregledate pomoću fiksnih vrednosti u odeljku Kombinovanje tri ili više tabela ili upita u upitu za združivanje.

Upitima za združivanje u programu Access podrazumevano uključuje samo jedinstvene zapise. Da, ali ako želite da uključite sve zapise? Drugi primer bi možda bilo korisno ovde.

Pokazali smo vam kako da kreirate ukupne vrednosti u upitu za združivanje u prethodnom odeljku. Izmena taj upit za združivanje SQL da uključite ID proizvoda = 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];

Prebacivanje na list sa podacima i prikaz trebalo bi da vidite pomalo zavaraju rezultat:

Datum prijema

Količina

22/1/2006

100

22/1/2006

200

Jedan zapis naravno ne vraća dvaput količinu ukupno.

Vidite sledeći rezultat zato na jedan dan količinu čokolade prodata dvaput - kao snimljen u tabeli Detalji porudžbine kupovinu. Evo jednostavnog upita za izdvajanje rezultat koji prikazuje oba zapisa u bazi podataka Northwind:

Kupite ID porudžbine

Proizvod

Količina

100

Northwind Traders čokolada

100

92

Northwind Traders čokolada

100

U upitu za združivanje prethodno istakli, možete da vidite da nije uključena porudžbenice ID polje i dva polja ne čine dve jedinstvene zapise.

Ako želite da uključite sve zapise, koristite UNION ALL umesto UNION u vaš SQL. Ovo najverovatnije će imati uticaj na Sortiranje rezultata, tako da možda želite da uključite u odredbi ORDER za određivanje redosleda sortiranja. Ovo je izmenjena SQL sastavni isključili iz prethodnog primera:

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];

Prebacivanje na list sa podacima i prikaz trebalo bi da vidite sve detalje pored ukupne vrednosti kao poslednjem zapisu:

Datum prijema

Ukupne vrednosti

Količina

22/1/2006

100

22/1/2006

100

22/1/2006

Ukupno

200

Uobičajeni korišćenje upita za združivanje je da posluži kao izvor zapisa za kontrolu kombinovanog okvira u obrascu. Možete da koristite taj kombinovanog okvira da biste izabrali vrednost da biste filtrirali zapise obrasca. Na primer, filtriranje zaposlenog zapise tako što ćete im grad.

Da biste videli kako ovo može da funkcioniše, evo drugog primera koji možete da kreirate u bazi podataka Northwind ilustruje ovaj scenario.

  1. Kreiranje jednostavnog upita za izdvajanje koristeći sledeću SQL sintaksu:

    SELECT Employees.City, Employees.City AS Filter
    FROM Employees;
  2. Prebacivanje na list sa podacima i prikaz trebalo bi da vidite sledeće rezultate:

    City

    Filter

    Sombor

    Sombor

    Novi Sad

    Novi Sad

    Kragujevac

    Kragujevac

    Kirkland

    Kirkland

    Sombor

    Sombor

    Kragujevac

    Kragujevac

    Sombor

    Sombor

    Kragujevac

    Kragujevac

    Sombor

    Sombor

  3. Pogledati rezultate možda nećete videti mnogo vrednost. Iako razvijte upit i transformacija u upit za združivanje pomoću sledeće SQL:

    SELECT Employees.City, Employees.City AS Filter
    FROM Employees
    
    UNION
    
    SELECT "<All>", "*" AS Filter
    FROM Employees
    
    ORDER BY City;
  4. Prebacivanje na list sa podacima i prikaz trebalo bi da vidite sledeće rezultate:

    City

    Filter

    < sve >

    *

    Novi Sad

    Novi Sad

    Kirkland

    Kirkland

    Kragujevac

    Kragujevac

    Sombor

    Sombor

    Access izvršava sjedinjavanje prethodno prikazanih, sa osnovno polje vrednosti svih < > devet zapisa i „*”.

    Pošto se ovaj združivanje odredba ne sadrži UNION ALL, Access daje samo jedinstvene zapise što znači da svaki grad dobija se samo jednom sa fiksnim identičnim vrednostima.

  5. Sada kada imate dovršenom upita za združivanje prikazivanje svakog imena grada samo jednom, zajedno sa opciju koja efikasno bira svih gradova, možete da koristite ovaj upita kao izvora zapisa za kombinovani okvir na obrascu. Koristite ovaj određeni primer kao model, možete da kreirate kombinovani okvir na obrascu, postavite ovog upita kao izvora zapisa, postavite svojstvo širine kolona filtriranje kolone na 0 (nula) da biste ga sakrili vizuelno, a zatim postavite svojstvo "povezana kolona" 1 da biste označili indeksa druge kolone. U svojstvu Filter obrasca u samoj zatim možete da dodate u kodu kao što su sledeće da biste aktivirali filter obrasca pomoću vrednost šta je izabran u kombinovani okvir:

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

    Korisničkog obrasca možete da filtrirate zapise obrasca na određeni grad ime ili izaberite < sve > da biste prikazali listu svih zapisa za sve gradove.

Vrh stranice

Razvijte Office veštine
Istražite obuku
Prvi nabavite nove funkcije
Pridružite se Office Insider korisnicima

Da li su vam ove informacije koristile?

Hvala vam na povratnim informacijama!

Hvala za povratne informacije! Zvuči da će biti od pomoći ako vas povežemo sa našim agentima Office podrške.

×