Több lekérdezés eredményének együttes megjelenítése egyesítő lekérdezéssel

Több lekérdezés eredményének együttes megjelenítése egyesítő lekérdezéssel

Megjegyzés:  Szeretnénk, ha minél gyorsabban hozzáférhetne a saját nyelvén íródott súgótartalmakhoz. Ez az oldal gépi fordítással lett lefordítva, ezért nyelvtani hibákat és pontatlanságokat tartalmazhat. A célunk az, hogy ezek a tartalmak felhasználóink hasznára váljanak. Kérjük, hogy a lap alján írja meg, hogy hasznos volt-e az Ön számára az itt található információ. Az eredeti angol nyelvű cikket itt találja .

Érdemes lehet előfordul, hogy egy vagy több másik tábla egy rekordhalmaz – egy listát a két vagy több táblák minden rekordját kialakításához azokkal egy táblából vagy lekérdezésből a rekordok listáját. Az egyesítő lekérdezés Access célját.

Az egyesítő lekérdezések hatékony megértéséhez, akkor először tudnia kell egyszerű választó lekérdezés Access tervezése. A választó lekérdezések tervezésével kapcsolatos további információért olvassa el a Egyszerű választó lekérdezés létrehozásacímű témakört.

Megjegyzés: A tartalom a jelen cikkben készült asztali Access-adatbázisokon alkalmazhatók. Nem hozható létre, vagy használja az egyesítő lekérdezés Access webes adatbázisokban vagy Access-webalkalmazásokban.

Egy egyesítő lekérdezés működő példát tanulmányozása

Ha soha nem létrehozott egyesítő lekérdezés előtt, akkor előfordulhat, hogy hasznos első tanulmányi egy működő példát a Northwind adatbázis az Access-sablon. Kereshet a Northwind minta sablon lekérdezése az Access lépések oldalon kattintson a fájl > Új , vagy közvetlenül letöltheti másolatának erről a helyről: Northwind minta sablon.

Miután az Access megnyitja a Northwind adatbázist, zárja be a bejelentkezési párbeszédpanelt űrlapot, amely először jelenik meg, és bontsa ki a navigációs ablakban. Kattintson a navigációs ablak tetejére, és válassza az Objektum típusa típusuk szerint az adatbázis-objektumok rendszerezésére. Ezután a lekérdezések csoport kibontása és látni fogja a Termék tranzakcióknevű lekérdezés.

Az egyesítő lekérdezések is egyszerűen lehet megkülönböztetni lekérdezés objektumokat, mert egy speciális ikon, amely hasonlít az Egyesült meg, amely a két adathalmaz két egymásba kapcsolódik kör rendelkeznek:

Képernyőkép: az Access egy egyesítő lekérdezés ikon.

Normál kiválasztása és a módosító lekérdezések eltérően nem táblái az egyesítő lekérdezés, ami azt jelenti, az Access a grafikus Lekérdezéstervező létrehozhatja vagy szerkeszteni az egyesítő lekérdezések nem használhatók. Fog tapasztalni a esetén az egyesítő lekérdezés nyissa meg a navigációs ablakból Az Access megnyitja a fájlt, és megjeleníti az eredményt Adatlap nézetben. A Kezdőlap lap nézetek parancsa alatt észre fogja venni, hogy Tervező nézetben nem érhető el az egyesítő lekérdezések-használatakor. Csak válthat Adatlap nézet és az SQL nézet között az egyesítő lekérdezések való munkavégzés során.

Az ebben a példában az egyesítő lekérdezés tanulmányozása folytatásához kattintson a Kezdőlap > Nézet > SQL nézet , amely meghatározza, hogy az SQL-szintaxisa megtekintéséhez. Ez az ábra hozzáadtunk néhány további térköz a SQL, így egyszerűen megtekintheti a különböző részei az egyesítő lekérdezés alkotó.

Vizuális példa az egyesítő lekérdezések SQL nézetben a Northwind minta Access sablonból.

Vegyük tanulmányozzák a részletesen a Northwind adatbázist az egyesítő lekérdezés SQL-szintaxisa:

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;

Az első és a harmadik részei a SQL-utasítást tulajdonképpen két a választó lekérdezések. Ezek a lekérdezések rekordok; két különböző csoportjaihoz beolvasása a Termék rendelések táblát, és a Termék vásárlások táblából egyet.

A második rész az SQL-utasítás az UNION kulcsszó, amely az Access azt jelenti, hogy a lekérdezés kombinálása-e a rekordok e két csoportját.

Ez az SQL-utasítást azonosító utolsó részét határozza meg, hogy a kombinált rekordok megváltoztatva ORDER BY utasítás segítségével. Ebben a példában az Access alakul sorrendje a rekordok szerint csökkenő sorrendben a rendelve mezőre.

Megjegyzés: Az egyesítő lekérdezések írásvédettek mindig az Accessben; Adatlap nézetben értékeket nem módosítható.

Egyesítő lekérdezés létrehozásával és kombinálása a választó lekérdezés létrehozása

Akkor is, ha az egyesítő lekérdezések SQL nézetben az SQL-szintaxisa közvetlenül írásával hozhat létre, akkor előfordulhat, hogy egyszerűbb a részeket, ahol a választó lekérdezések összeállításához. Majd másolja és illessze be az SQL-modulok kombinált az egyesítő lekérdezés.

Ha azt szeretné, a lépések olvasási kihagyásával inkább megtekintés példa, lásd: a következő szakaszban Megtekintés példa egy egyesítő lekérdezés létrehozásával.

  1. Kattintson a Létrehozás lap Lekérdezések csoportjának Lekérdezéstervező gombjára.

  2. A Tábla megjelenítése párbeszédpanelen kattintson duplán arra a táblára, amelyből adatokat kíván lekérdezni. Ezzel felveszi a táblát a lekérdezéstervező ablakába.

  3. Zárja be a Tábla megjelenítése párbeszédpanelt.

  4. A Lekérdezéstervező ablakban kattintson duplán a felvenni kívánt mezőit. Miközben kijelöli a mezőket, ellenőrizze, hogy ugyanazt a számot, a mezők, ugyanabban a sorrendben adja hozzá, a választó lekérdezések hozzáadása. A mezők adattípusainak ügyeljen figyelmet, és győződjön meg arról, hogy a program kombinálása más lekérdezéseket azonos pozíciójában, hogy azok kompatibilis adattípusok mezőkkel. Ha az első választó lekérdezés öt mezőt az első dátum/idő adatokat tartalmaz, például győződjön meg arról, hogy a többi Választó lekérdezésnél, hogy a program kombinálásával is öt mezőket tartalmaz, az első dátum/idő adatokat tartalmaz, és így tovább.

  5. Tetszés szerint feltételeket adhat a mezőkhöz a mezőrács feltétel sorába írja be a megfelelő kifejezés.

  6. Miután végzett a mezők és mezőfeltételek megadásával, futtassa a választó lekérdezést, és tekintse át az eredményt. Kattintson a Tervezés lap eredmények csoportjának Futtatásparancsára.

  7. Váltson át Tervező nézetre.

  8. Mentse és hagyja nyitva a választó lekérdezést.

  9. Ismételje meg a fenti lépést a többi egyesíteni kívánt választó lekérdezésnél.

Most, hogy a választó lekérdezések hozta létre, pedig összekapcsolásukkal. Ebben a lépésben az egyesítő lekérdezés másolásával és beillesztésével az SQL-utasítások létrehozásához.

  1. Kattintson a Létrehozás lap Lekérdezések csoportjának Lekérdezéstervező gombjára.

  2. Zárja be a Tábla megjelenítése párbeszédpanelt.

  3. Kattintson a Tervezés lap lekérdezés csoportjában kattintson az egyesítőgombra. Az Access elrejti a Lekérdezéstervező ablakban, és bemutatja az SQL nézetének objektumlapjára. Ezen a ponton a SQL nézetének objektumlapjára üres lesz.

  4. Kattintson az egyesíteni kívánt első választó lekérdezés fülére.

  5. Kattintson a Kezdőlap lap Nézet > SQL nézet.

  6. Másolja a vágólapra a választó lekérdezés SQL-utasítását. Kattintson az Ön által indított korábbi létrehozása az egyesítő lekérdezés fülre.

  7. Illessze be a választó lekérdezés SQL-utasítását az egyesítő lekérdezés SQL nézetének objektumlapjára.

  8. Törölje a választó lekérdezés SQL-utasításának végéről a pontosvesszőt (;).

  9. A kurzor mozgatása egy sorral lefelé, és írja be a UNION az új sorban az Enter billentyű lenyomásával.

  10. Kattintson az egyesíteni kívánt következő választó lekérdezés fülére.

  11. Ismételje meg az eljárás 5–10. lépését, amíg vágólapra nem másolta és be nem illesztette a választó lekérdezések összes SQL-utasítását az egyesítő lekérdezés SQL nézet ablakában. Ne törölje a pontosvesszőt, és ne írjon semmit az utolsó választó lekérdezés SQL-utasításának végére.

  12. A Tervezés lap Eredmények csoportjában kattintson a Futtatás gombra.

Az egyesítő lekérdezés eredményét Adatlap nézetben jelennek meg.

Megtekintés az példa az egyesítő lekérdezés létrehozása

Íme egy példa, hogy létrehozhatja a Northwind adatbázisban. Ez az egyesítő lekérdezés gyűjti össze azoknak a Vevők táblát, és a Szállítók táblából azoknak egyesíti őket. Követni szeretné, ha a fenti lépéseket a-példány a Northwind mintaadatbázis működik.

A Northwind minta az Access-sablonok az egyesítő lekérdezés épület vizuális példa.

Az alábbiakban a lépéseket szükség ebben a példában:

  1. Nevű lekérdezés1 és lekérdezés2 a vevők és a termékek tábla rendre adatforrásokat két választó lekérdezés létrehozása Utónév és Vezetéknév mezők, értékek megjelenítéséhez használja.

  2. Hozzon létre egy új lekérdezést, először nevű Query3 nincs adatforrás, és kattintson az, hogy a lekérdezés az egyesítő lekérdezés az Egyesítés parancs a Tervezés lapon.

  3. Másolja és illessze be az SQL-utasítások lekérdezés1 és lekérdezés2 Query3. Ügyeljen arra, hogy távolítsa el a felesleges pontosvesszőt, és vegyen fel a az UNION kulcsszó. Ellenőrizze az eredményeket Adatlap nézetben.

  4. Beszúrhat egy rendezési záradékban a lekérdezések közül, és illessze be az ORDER BY utasítás be az egyesítő lekérdezést SQL nézetben. Figyelje meg, hogy Query3, az egyesítő lekérdezés, amikor a rendezés fűzött, először a pontosvesszőket törlődnek, majd a táblázat nevére a mezők neve.

  5. Az utolsó SQL egyesíti, és ebben a példában az egyesítő lekérdezés a nevek rendezése a következőket:

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

Nagyon kényelmes Ha írása SQL-szintaxisa bizonyára írhat egyéni SQL-utasítását az egyesítő lekérdezés közvetlenül az SQL megtekintése. Jó helyen jár akkor előfordulhat, hogy hasznos másolja és illessze be az SQL más lekérdezés objektumból megközelítése követése. Lehet, hogy minden lekérdezés sokkal összetettebb, mint az itt használt Egyszerű választó lekérdezés példák. Lehet, hogy kattintva hozhat létre, és tesztelje mindkét lekérdezés gondosan, mielőtt az egyesítő lekérdezés kombinálása őket a kihasználásához. Ha az egyesítő lekérdezés nem fut, beállíthatja, hogy minden lekérdezés egyenként amíg nem tud, és ezután újraépítéséhez az egyesítő lekérdezés, amelynek a korrigált képletszintaxisát.

Tekintse át a hátralévő szakaszok tippek és trükkök az egyesítő lekérdezés használatával kapcsolatos további olvashatók.

A példában a Northwind adatbázis használata az előző szakaszétól csak két tábla adatainak kombinálása. Azonban nagyon egyszerűen az egyesítő lekérdezés három vagy több táblát is összevonhatja. Ha például támaszkodva az előző példában, érdemes lehet is csatolhat az alkalmazottak azoknak a lekérdezés eredménye. Ezt a feladatot egy harmadik lekérdezés hozzáadásával, és az előző, egy további UNION kulcsszót jelennek meg az SQL-utasítással kombinálása végezheti el:

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

Amikor az eredményt Adatlap nézetben, az összes alkalmazottak a minta vállalatnév, amelyek valószínűleg a rendkívül hasznos nem jelenik meg. Ha azt szeretné, hogy ezt a mezőt, amely azt mutatja, ha egy személy házon belüli alkalmazott, a szolgáltató, vagy egy ügyfél, a rögzített érték helyett a vállalat nevét is felvehet. Az alábbiakban hogyan az SQL jelenne meg:

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

Az alábbiakban hogyan megjeleníti az eredményt Adatlap nézetben. Access megjeleníti a rekordok öt példa:

Alkalmazási

Utónév

Vezetéknév

Házon belüli

Freehafer

Anna

Házon belüli

Giussani

Laura

Címkéjét

Glasson

Stuart

Ügyfél

Goldschmidt

Daniel

Ügyfél

Budai

Antonio

A fenti lekérdezés még tovább csökkenthető, mivel az Access csak a kimeneti mezőket azoknak a beolvassa az első lekérdezés az egyesítő lekérdezés. Itt jelenik meg a második és harmadik lekérdezés szakaszok azt eltávolítása a kimenet:

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

Egy Access-egyesítő lekérdezés, a rendezés csak egyszer engedélyezett, de minden lekérdezés egyenként szűrhetők. Az előző szakaszban az egyesítő lekérdezés, az alábbiakban példa hol azt a szűrt minden lekérdezés WHERE záradékot hozzáadásával támaszkodva.

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

Váltás Adatlap nézetben, és ehhez hasonló eredményeket láthatja:

Alkalmazási

Utónév

Vezetéknév

Címkéjét

Andersen

Erzsébet

Házon belüli

Freehafer

Anna

Ügyfél

Hasselberg

Jonas

Házon belüli

Hellung-Anna

Anna

Címkéjét

J. Hernandez-Echevarria

Amaya

Ügyfél

Sándor

Horváth

Címkéjét

Sandberg

Mikael

Címkéjét

Tóth

András

Házon belüli

Thorpe

Kálmán

Címkéjét

Weiler

Cornelia

Házon belüli

Zare

Péter

A lekérdezések Unió nagyon eltérőek, ha egy olyan helyzet, ha egy kimenet mezőt kell alakítania a különböző adattípusú adatok előforduló. Igen, az egyesítő lekérdezés leggyakrabban ad eredményül az eredmények szöveg adattípusú, mert adott típusú adatokat tartalmazhatnak mindkét szöveg és számok.

Ha meg szeretné érteni, hogy hogyan működik, a Northwind adatbázisban a Termék tranzakciók egyesítő lekérdezés használjuk. Nyissa meg a mintavállalati adatbázis, és nyissa meg a termék tranzakciók lekérdezést Adatlap nézetben. Az utolsó tíz rekordot a következőképpen fog kinézni a kimenet:

Termékazonosító

Rendelés dátuma

Cég neve

Transaction

Mennyiség

77

1/22/2006

B szállító

Vásárlás

60

80

1/22/2006

D szállító

Vásárlás

75

81

1/22/2006

Szállító

Vásárlás

125

81

1/22/2006

Szállító

Vásárlás

200

7

1/20/2006

A vállalat D

Elad

10

51

1/20/2006

A vállalat D

Elad

10

80

1/20/2006

A vállalat D

Elad

10

34

1/15/2006

A vállalat ε

Elad

100

80

1/15/2006

A vállalat ε

Elad

30

Tegyük fel, amelyet a mennyiség mező felosztása ketté - vásárlása és értékesítés. Tegyük is fel szeretné használni a rögzített értékkel nem rendelkező mező értékét nulla. Az alábbiakban az SQL-e az egyesítő lekérdezés képének:

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; 

Ha Adatlap nézetben, látni fogja az utolsó tíz rekordról most az alábbihoz hasonló:

Termékazonosító

Rendelés dátuma

Cég neve

Transaction

Megvásárlása

Értékesítés

74

1/22/2006

B szállító

Vásárlás

20

0

77

1/22/2006

B szállító

Vásárlás

60

0

80

1/22/2006

D szállító

Vásárlás

75

0

81

1/22/2006

Szállító

Vásárlás

125

0

81

1/22/2006

Szállító

Vásárlás

200

0

7

1/20/2006

A vállalat D

Elad

0

10

51

1/20/2006

A vállalat D

Elad

0

10

80

1/20/2006

A vállalat D

Elad

0

10

34

1/15/2006

A vállalat ε

Elad

0

100

80

1/15/2006

A vállalat ε

Elad

0

30

Ebben a példában a Folytatás mi történik, ha azt szeretné, a nulla és üres mezőket? Módosíthatja az SQL helyett az alábbihoz hasonló a Null kulcsszót hozzáadásával nulla semmi nem jelenik meg:

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;

Azonban, akkor előfordulhat, hogy rendelkezik figyelhető meg átirányítása az Adatlap nézetben, ekkor egy nem várt eredményt. A vásárlás oszlopban minden mező üres:

Termékazonosító

Rendelés dátuma

Cég neve

Transaction

Megvásárlása

Értékesítés

74

1/22/2006

B szállító

Vásárlás

77

1/22/2006

B szállító

Vásárlás

80

1/22/2006

D szállító

Vásárlás

81

1/22/2006

Szállító

Vásárlás

81

1/22/2006

Szállító

Vásárlás

7

1/20/2006

A vállalat D

Elad

10

51

1/20/2006

A vállalat D

Elad

10

80

1/20/2006

A vállalat D

Elad

10

34

1/15/2006

A vállalat ε

Elad

100

80

1/15/2006

A vállalat ε

Elad

30

Ez történik oka az, mivel az Access határozza meg, hogy az első lekérdezés mezői adattípusai. Ebben a példában Null nem áll egy számot.

Így mi történik, ha üres karakterláncot az üres érték mezők beszúrása? A kísérlet az SQL nézhet ki például a következőket:

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;

Amikor vált Adatlap nézetben, látni fogja, hogy az Access megvásárlása értékeket ad vissza, de azt az értéket szöveggé alakítja. Beállíthatja, hogy ezek a szöveges értékeket az mivel azok balra igazodnak az Adatlap nézetben. Az üres karakterlánc az első lekérdezés nem egy szám, ezért ezeket az eredményeket látható. Észre fogja venni is, hogy az értékesítés értékek is szöveggé alakulnak át, mert a vásárlás rekordjaiban üres karakterláncot.

Termékazonosító

Rendelés dátuma

Cég neve

Transaction

Megvásárlása

Értékesítés

74

1/22/2006

B szállító

Vásárlás

20

77

1/22/2006

B szállító

Vásárlás

60

80

1/22/2006

D szállító

Vásárlás

75

81

1/22/2006

Szállító

Vásárlás

125

81

1/22/2006

Szállító

Vásárlás

200

7

1/20/2006

A vállalat D

Elad

10

51

1/20/2006

A vállalat D

Elad

10

80

1/20/2006

A vállalat D

Elad

10

34

1/15/2006

A vállalat ε

Elad

100

80

1/15/2006

A vállalat ε

Elad

30

Igen, hogyan megoldani a kirakó?

A megoldás, ha a lekérdezés számíthat, a mező értékét, hogy egy szám kényszerítése. Amely a kifejezéssel végezhető el:

IIf(False, 0, Null)

Annak ellenőrzéséhez, hamis, a feltétel soha nem lesz Igaz, így a kifejezés mindig visszaáll Null, de az Access továbbra is ad mindkét kimeneti beállítások és úgy dönt, hogy a kimenet numerikus vagy Null.

Az alábbiakban azt használatát a kifejezés ebben a példában a munkát:

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;

Ne feledje, hogy azt nem szükséges, a második lekérdezés módosításához.

Adatlap nézet vált, ha azt szeretné, hogy az eredmény most jelenik meg:

Termékazonosító

Rendelés dátuma

Cég neve

Transaction

Megvásárlása

Értékesítés

74

1/22/2006

B szállító

Vásárlás

20

77

1/22/2006

B szállító

Vásárlás

60

80

1/22/2006

D szállító

Vásárlás

75

81

1/22/2006

Szállító

Vásárlás

125

81

1/22/2006

Szállító

Vásárlás

200

7

1/20/2006

A vállalat D

Elad

10

51

1/20/2006

A vállalat D

Elad

10

80

1/20/2006

A vállalat D

Elad

10

34

1/15/2006

A vállalat ε

Elad

100

80

1/15/2006

A vállalat ε

Elad

30

Egy alternatív módszer ugyanazt az eredményt eléréséhez, ha az még egy másik lekérdezésével az egyesítő lekérdezést a lekérdezések prepend:

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

Az egyes mezők az Access az adattípus definiálása rögzített értékeket adja vissza. Természetesen nem szeretné, hogy a lekérdezés zavarja az eredményeket, így a trükk elkerülése érdekében, hogy a hamis WHERE záradékot felvenni a kimenet:

WHERE False

Ez a egy kis trükk, mivel ez mindig hamis, és kattintson a lekérdezési eredmény semmit. Ez a meglévő SQL utasítást egyesítése és azt érkeznek egy befejezett utasítás az alábbi képlettel történik:

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;

Megjegyzés: A kombinált lekérdezés ebben a példában a Northwind adatbázis használata 100 rekordot visszaad, miközben az egyes két lekérdezések visszaadjon 58 és 43 101 rekordok összesen. Ez az eltérés az az oka az oka, hogy két rekordot nem egyediek. Tekintse meg a az egyesítő lekérdezések UNION ALL, distinct rekordok kezelése, megtudhatja, hogyan oldhatja meg ebben az esetben a UNION ALL használatával.

Az egyesítő lekérdezések speciális eset is egyesítheti egy rekordhalmaz egy rekord, amely tartalmazza az egy vagy több mezőjének összegét.

Íme egy másik példa látható a Northwind adatbázisban összesen beszerzése az egyesítő lekérdezés bemutatásához hozhat létre.

  1. Létrehoz egy új, egyszerű lekérdezést sör megvásárlása megtekintéséhez (Termékszám a Northwind adatbázis 34 =) használata a következő SQL-szintaxisa:

    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. Váltás az Adatlap nézetben, és négy vásárlások jelennie:

    Fogadott dátum

    Mennyiség

    1/22/2006

    100

    1/22/2006

    60

    4/4/2006

    50

    4/5/2006

    300

  3. Szerezze be a teljes, hozzon létre egy egyszerű összesítése lekérdezés használatával az alábbi SQL:

    SELECT Max([Date Received]), Sum([Quantity]) AS SumOfQuantity
    FROM [Purchase Order Details]
    WHERE ((([Purchase Order Details].[Product ID])=34))
  4. Váltás az Adatlap nézetben, és csak egy bejegyzés jelennie:

    Fogadott MaxOfDate

    Összmennyiségek

    4/5/2006

    510

  5. Ezek a két lekérdezések egyesítése egyesítő lekérdezés az összes mennyiséggel a rekord hozzáfűzése a vásárlás rekordokat:

    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. Váltás az Adatlap nézetben, és a négy vásárlások az egyes egy rekord, amely a mennyiség összesítő követ összegét jelennie:

    Fogadott dátum

    Mennyiség

    1/22/2006

    60

    1/22/2006

    100

    4/4/2006

    50

    4/5/2006

    300

    4/5/2006

    510

Összegek hozzáadása az egyesítő lekérdezés alapvető bemutatja, hogy. Érdemes azt is, mindkét lekérdezés például "Részletei" és "Összesen" a rekordokból a teljes rekord vizuális elkülönítésére rögzített értékek felvenni. Áttekintheti a rögzített értékek használata három vagy több szereplő táblákat és lekérdezéseket az egyesítő lekérdezés kombinálásaszakaszában.

Alapértelmezés szerint az Access alkalmazásban az egyesítő lekérdezések csak az egyedi rekordok tartalmazzák. De mi a teendő, ha az összes rekordot felvenni kívánt? Egy másik példa az alábbi hasznos lehet.

Az előző szakaszban azt mutatott, összesen létrehozása az egyesítő lekérdezés. Módosíthatja, hogy az egyesítő lekérdezés SQL, ha meg szeretné jeleníteni a Termékszám = 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];

Váltás az Adatlap nézetben, és egy kicsit félrevezető eredményt jelennie:

Fogadott dátum

Mennyiség

1/22/2006

100

1/22/2006

200

Több rekord természetesen nem ad vissza kétszer mennyiség teljes.

Ez az eredmény oka az, mivel az egy napi chocolates azonos mennyiségű kétszer - adták el a vételi rendelés részletei táblában feljegyzett. Íme egy egyszerű választó lekérdezés eredményének mindkét rekordot megjelenítő a Northwind adatbázisban:

Vásárlás Rendeléskód

Product (Termék)

Quantity (Mennyiség)

100

Northwind Traders csokoládé

100

92

Northwind Traders csokoládé

100

Korábban jegyezni az egyesítő lekérdezés akkor láthatja, hogy a vételi Rendeléskód mező nem tartalmaz, és, hogy a két mező két egyedi rekordok alkotó nem.

Ha szeretne felvenni az összes rekordot, az SQL-Unió helyett használja UNION ALL. Kattintson az eredmények rendezést, ezért érdemes lehet is a rendezési sorrend ORDER BY záradék hatással főleg valószínűleg lesz. Az alábbiakban a módosított SQL building kikapcsolása az előző példában:

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

Váltás az Adatlap nézetben, és kell látható teljes mellett a részletek az utolsó rekord:

Fogadott dátum

Összesen

Mennyiség

1/22/2006

100

1/22/2006

100

1/22/2006

Total (Összeg)

200

Az egyesítő lekérdezések a közös használat a kombinált lista vezérlőelem egy űrlapon rekordforrásának szolgáló. Jelölje ki a kívánt értéket a képernyő-rekordok szűrése a kombinált lista is használhatja. A város által alkalmazott rekordjainak például szűrésével.

Ez hogyan működik, Íme egy másik példa mutatja be, ebben az esetben a Northwind mintaadatbázis hozhat létre.

  1. Hozzon létre egy egyszerű választó lekérdezés használatával a SQL-szintaxisa:

    SELECT Employees.City, Employees.City AS Filter
    FROM Employees;
  2. Váltás az Adatlap nézetben, és a következő eredményeket jelennie:

    Város

    Szűrés

    Kecskemét

    Kecskemét

    Verőce

    Verőce

    Redmond

    Redmond

    Kirkland

    Kirkland

    Kecskemét

    Kecskemét

    Redmond

    Redmond

    Kecskemét

    Kecskemét

    Redmond

    Redmond

    Kecskemét

    Kecskemét

  3. Ezeket az eredményeket rögzíthetők előfordulhat, hogy nem sok érték jelenik meg. Bár bontsa ki az a lekérdezést, és a következő SQL használatával az egyesítő lekérdezés átalakítása:

    SELECT Employees.City, Employees.City AS Filter
    FROM Employees
    
    UNION
    
    SELECT "<All>", "*" AS Filter
    FROM Employees
    
    ORDER BY City;
  4. Váltás az Adatlap nézetben, és a következő eredményeket jelennie:

    Város

    Szűrés

    < összes >

    *

    Verőce

    Verőce

    Kirkland

    Kirkland

    Redmond

    Redmond

    Kecskemét

    Kecskemét

    Az Access végzi a korábban már látható, a rögzített mező értékeit < > kilenc rekordok union és "*".

    Mivel ez egyesítő záradék UNION ALL nem tartalmazhat, az Access csak egyedi rekordok ami azt jelenti, egyes városaihoz csak egyszer a rögzített azonos értéket ad vissza adja eredményül.

  5. Most, hogy jelennek meg egyes a város neve, csak egyszer, együtt beállítást, amely hatékony kijelöli az összes városok elkészült az egyesítő lekérdezés, használhatja a lekérdezés rekordforrásaként a kombinált listákban az űrlapon. Ez a példa egy adatmodellt használ, úgy lehetett létrehozni, a kombinált lista vezérlőelem egy űrlapon, ezt a lekérdezést a rekordforrás beállítása, a tulajdonság oszlopszélesség szűrő oszlop vizuálisan elrejtheti a 0 (nulla), és kattintson a tulajdonság kötött oszlop, hogy az index 1 a második oszlopban. A szűrés tulajdonságban magának az űrlapnak majd megadhat például az alábbi módon aktiválja a Űrlapszűrő választotta, hogy mi a kombinált lista vezérlőelem értékének használata:

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

    A felhasználó az űrlap ezután egy adott város neve űrlap rekordok szűrése, és jelölje ki az < összes > található összes városok összes rekordok listáját.

Vissza a lap tetejére

Office-jártasság bővítése
Oktatóanyagok megismerése
Új szolgáltatások listájának lekérése
Részvétel az Office Insider programban

Hasznos volt az információ?

Köszönjük a visszajelzését!

Köszönjük visszajelzését. Jobbnak látjuk, ha az Office egyik támogatási szakemberéhez irányítjuk.

×