Névjegyzék

Az Unió SQL-ben. Az Unió és az Unió SQL-ben - leírás és példák az uniós uniós kérések megszervezésére

Itt az ideje, hogy beszéljünk az adatok kombinálásáról építési eszközökkel unió és unió minden.Mivel ez néha nagyon hasznos, és anélkül, hogy ilyen kialakítást használnánk, néha nem teheted meg. Példákat írnak a DBMS-ben MSSQL 2008.SQL nyelv használata.

És szeretném elkezdeni azzal a ténnyel, hogy már sok példát tekintettünk az írási kérésekre Sqlpéldául az SQL Select operátor vagy az SQL karakterláncfunkciók használata, mind a PLPGSQL-en, mind a Transct-SQL-en, például a PL / PGSQL és a Tranzact-SQL - Tabular funkciók és az ideiglenes funkciók beírása asztalok.

Nem csak a fent említett cikkeket jeleztem, de rámutattam rájuk, mert a mai lecke jobb megértése és tanítása érdekében kezdeti tudásra van szükséged (ez egy webhely az újonc programozók számára), amelyet a fent említettekből kaphat anyag.

És így kanyarod. És az indítók számára nézzük meg, hogy mi ez a hagyma és az egyes szereplők.

Mi az Unió és az Unió SQL-ben?

  • Unió - Ez egy SQL össze a kapott adathalmaz több kérelem, és ez a szolgáltató jelenik meg csak az egyedi vonalak lekérdezések, azaz Például két kérelmet és mindegyiket ötvözi, amelyek ugyanazok az adatokkal rendelkeznek, más szavakkal teljesen azonosak, és az uniós szolgáltató egy sorba illeszkedik az egyik sorba, hogy ne legyen kettős;
  • Unió minden. - Ez egy SQL utasítás, amely több kérésű adatkészletet egyesíti, és ez az üzemeltető már abszolút vonalat tartalmaz, még akkor is.

Az üzemeltetők számára az Unió és az Unió összes

  1. A mezők sorának kell lennie azonos Minden kérésben, azaz Az egyes kérelmekben szereplő mezők száma, amelyet az Unió vagy az Unió segítségével kombinálnak, meg kell felelniük;
  2. Adattípusok A mezőket is meg kell egyeznie az egyes kérésekben, azaz Például, ha egyetlen kérelmet szeretne írni, amelyben egy adattípus, a második lekérdezésben lesz, a Varchar adattípus, akkor nem kap egy kérést, és a kérés ablak letiltja a hibát;
  3. Az üzemeltető rendezése esetén rendezés. Csak megadhatja az utolsó kérés után.

Most beszéljünk arról, hogy milyen esetekre van szükségük ezeket az operátorokat. Nos, például számos adatbázis van hasonló struktúrával, amelyek mindegyike létrehozott, például bármely ág számára, és ezeket az adatokat kell összekapcsolnia, hogy jelentést készítsen minden fióktelepről a menedzsmentre és a legegyszerűbbre Meg kell tenni, hogy az SQL-ről szóló kéréseket írjon, amelyek mindegyike különböző bázisokat, valamint az Unióban vagy az Unióban egyesíti őket. Néha néha szükség van az adatok egy adatbázisban történő kombinálására olyan módon, hogy nem tudjuk végrehajtani a szokásos egyesületeket, és használhatjuk az Uniót. Miért mondom "szükséges" Igen, mert ez a design jelentősen növeli a lekérdezés végrehajtási idejét, ha ilyen sok adat nagyon sok, és nem szükséges visszaélni.

Elég elmélet, menj a gyakorlatba.

Jegyzet! Amint már említettük, kéréseket írhat az SQL Server 2008 menedzsment stúdiójában

Példák az Unió és az Unió minden használatára

Kezdetben, két egyszerű teszt és test_table_2 táblázat létrehozása.

Táblázat létrehozása (identitás (1,1) NULL, (18, 0) NULL, (50) NULL, (50) NULL, Korlátozott elsődleges kulcscsoportosított (ASC) (PAD_INDEX \u003d OFF, statistics_norecompute \u003d Off, Ignore_Dup_Key \u003d Off, Engedély_row_locks \u003d Bekapcsolva) A Go Set ANSI_PADDING OFF - és a második táblázat létrehozása táblázat (identitás (1,1) NULL, (18, 0) NULL, (50) NULL, Korlátozott elsődleges kulcscsoport (ASC) (pad_index \u003d ki) , statisztika_norecompute \u003d OFF, IGNORE_DUP_KEY \u003d OFF, engedélyezve_row_locks \u003d be, engedélyezve_page_locks \u003d bekapcsolva) a Go Set Ansi_padding Off Go

Ezek például csak különböző nevek. Ilyen adatokkal töltöttem őket:

Most írjunk egy kérést, amely az ebből eredő adatokat egyesíti, például Unióban. A szintaxis nagyon egyszerű:

Kérjen 1 Unió kérését 2 Unió lekérdezése 3, stb.

Itt van egy lekérdezés:

Válasszon számot, szöveget a Test_Table Union Select szám, szöveg a Test_Table_2

Amint láthatja, csak 5 sor született, mivel az első sorban az első sorban van, és a második kérelem első sora ugyanaz, ezért kombinálták.

Most egyesítsük az egyesülést

Itt van egy lekérdezés:

Válasszon számot, szöveget a Test_Table Union összes kiválasztási szám, szöveg a Test_Table_2

Minden vonalat már hoztak ide, mivel minden egyes szakszervezetet megadtunk.

És most nézzük meg, hogy milyen hibák is lehetnek ebben az egyszerű lekérdezésben. Például összekeverjük a mezők sorrendjét:

Vagy további mezőt jeleztünk az első kérésben, és a másodikban nem történt meg.

Továbbá, például a megrendelés használatakor:

Itt jeleztük a válogatást minden kérelemben, és csak az utóbbi esetében szükséges volt, például:

Válasszon számot, szöveget a Test_Table Union összes kiválasztása szám, szöveg a Test_Table_2 sorrend szerint

És végül azt akartam mondani egy trükkről, amely akkor használható, ha például egy kérésben még mindig szükséges, és nincs más választás másokban, vagy nem szükséges, erre írhat ez a kérés:

Válasszon azonosítót, számot, szöveget a Test_Table Union All Select ", szám, szöveg, Test_Table_2

azok. Amint azt egyszerűen látja, ahol a mezőnek üresnek kell lennie, és a kérés tökéletesen működik, például:

Valószínűleg csak azt akartam mondani a tervezésről unió és Unió Minden SQL nyelv Mondtam, hogy vannak-e kérdések ezen üzemeltetők használatával kapcsolatban, kérdezze meg őket a megjegyzésekben. Sok szerencsét!

Az uniós adatkészletekkel való munkavállaló egyesíti a két vagy több kérés eredményét, és az összes kérés sorát mutatja, mint egy eredményt.

Az Unió az üzemeltetők osztályára vonatkozik az adatkészletekkel való munkavégzéshez (operátor). Más ilyen operátorok közé tartoznak a metszés és az ECCERT (ECCERT és MINUS funkcionális ekvivalensek, de az ECTRT az ANSI / Minden adatkészlet tartalmazza az adatkészleteket, hogy egyidejűleg manipulálja a két vagy több kérés eredményeit, innen és nevétől.

S0L2003 szintaxis

Az uniós nyilatkozatban szereplő kérelmek számának technikai korlátozásai nem léteznek. Az általános szintaxis a következő.

Unió

Unió

Kulcsszavak

Unió

Azt jelzi, hogy a kapott készletek egy eredménykészletbe kerülnek. A karakterláncok duplikátumát alapértelmezés szerint törlik.

Minden.

Az összes kapott készletből származó vonalak párolása kombinálódik.

Különböző.

A megismételt sorok törlődnek a kapott készletből. A null értékeket tartalmazó oszlopok duplikátumoknak tekintendők. (Ha a kulcsszavakat és a távolságot nem használják, a DisaLet alapértelmezés szerint érkezik.)

Általános szabályok

Csak egy fontos szabály, amelyet meg kell emlékezni az uniós üzemeltető használatakor: megrendelés, az oszlopok adatainak száma és típusa minden kérésben azonosnak kell lennie.

Az adatok típusai nem lehetnek azonosak, de kompatibilisnek kell lenniük. Például a char és a varchar típusok kompatibilisek. Alapértelmezés szerint az így kapott kezelés a legnagyobb kompatibilis típusok méretét használja, és a lekérdezést, amelyben három oszlop típusú, char (5), char (5), char (5), char (IO) és char (12) kombinálva van, az eredmények char Formátum (12), és a kisebb méretű oszlopok további tereket adnak hozzá.

Bár az ANSI szabvány szerint a metsző nyilatkozat magasabb prioritást élvez a többi piaci szereplőkhöz képest, hogy a készletekkel dolgozzanak, sok platformon ezeket az üzemeltetőket ugyanolyan prioritásként kezelik. A szereplők prioritását a zárójelben kifejezetten kezelheti. Ellenkező esetben a DBMS valószínűleg elvégzi azokat a balról jobbra.

A különálló javaslat (a platformtól függően) jelentős teljesítményköltséget igényelhet, mivel gyakran további áthaladást igényel a kapott készletben, hogy eltávolítsa az ismétlődő rekordokat. A termelékenység növelésére irányuló javaslat minden esetben meghatározható, ha a másolatokat nem várható (vagy ha a másolatok megengedettek).

Az ANSI szabvány szerint csak egy megrendelést használhatunk. Tegye a legújabb kiválasztási utasítás végén. Annak érdekében, hogy elkerülje a kétértelműséget az oszlopok és táblázatok megadásakor, győződjön meg róla, hogy a megfelelő pszeudonimokat minden oszlopra hozzárendeli. Azonban, amikor az oszlopok nevét a Select ... Unió kérésére megadja, csak az első kérés álnevét használják. Például:

Válassza ki az AU_LNAME parancsot a szerzők uniójának első névként Válassza ki az EMP_LNAME első nevét az alkalmazottak sorrendjévé válassza a LastName, a FirstName; SeeltName a munkavállalók megrendelésével

Ezenkívül, mivel az uniós kezelői lekérdezések tartalmazhatnak olyan oszlopokat, amelyek kompatibilis adattípusokkal rendelkeznek, különböző platformokon történő kódolásának változásai lehetnek, különösen az oszlop adattípusának hossza tekintetében. Például, ha az AU_FNAME oszlop észrevehetően hosszabb, mint a második lekérdezés EMPLNAME oszlopa, akkor a különböző platformok különböző szabályokat alkalmazhatnak a használt hosszúság meghatározására. Általában azonban a platformot az eredményül kapott állításhoz (és kevésbé korlátozott) adattípusra választjuk.

Minden SURBD alkalmazhatja saját szabályait az oszlop nevének meghatározására, ha a különböző táblázatok oszlopai különböző nevekkel rendelkeznek. Rendszerként az első kérés nevét használják.

DB2.

A DB2 platform támogatja a kulcsszavakat Unió és az Unió összes ANSI szabványt, valamint az értékek értékét.

[, (kifejezés-!, kifejezés2, ...)] [...] [...]

Lehetővé teszi, hogy egy vagy több kézi definiált értéket adjon meg a kombinált eredményben lévő bejegyzésekhez. Mindegyik értéknek pontosan ugyanolyan számú oszlopot kell tartalmaznia, mint az uniós kezelői lekérdezések. A kapott készletben lévő értékek sorai vesszővel vannak elválasztva.

Bár az Unió különálló ajánlata nem támogatott, a funkcionális egyenérték az uniós javaslat. A megfelelő ajánlat nem támogatott.

Egy kulcsszószövetettel nem használhat olyan adattípusokat, mint a Varchar, a hosszú vargraphic, a Blob, a Clob, a DBClob, a Datalink és a szerkezeti típusok (de az Unió összes ajánlatával használható).

Ha az összes táblázat az oszlop egyik nevét használja, akkor ezt a nevet használják a kapott készletben. Ha az oszlopok neve különbözik, a DB2 új oszlopnevet generál. Ezután ez az oszlop nem használható a megrendeléshez, vagy a frissítéshez.

Ha több üzemeltetőt használnak az adatkészletek egy lekérdezésében, akkor a zárójelben lévőek. Ezt követően a szolgáltatók balról jobbra kerülnek. Azonban az összes metszés műveletet az Unió vagy az ETRT műveletek előtt végzik. Például:

Válassza ki az EMPNO-t a munkavállalóhoz, ahol az "E%" unió, mint az "E%" unió Válassza ki az EMPNO-t az EMP_AK-ról, ahol a Projno ("IF1000", "IF2000", "AA0001)," AA0001), (AB0001), ("AC0003") )

Ebben a példában, megkapjuk az összes azonosítót az alkalmazottak a Munkavállaló asztalra, ami abból áll, minden osztály, a neve kezdőbetűje „E”, valamint az azonosító minden dolgozójának a EMP_ACT számviteli asztalra, hogy a munka IF1000 projektek "IF2000" és "AD3110". Ezenkívül az "Aa000t, az" AV0002 "munkavállalók azonosítója, és az" AC00031 mindig szerepel.

Mysql

Nem támogatott.

Jóslat

Az Oracle platform támogatja a kulcsszavakat Unió és az Unió összes SQL ANSI szabványt. A szintaxis a következő.

Az Oracle nem támogatja a megfelelő javaslatot. Az Unió nem. Támogatott, de a funkcionális egyenérték az uniós javaslat. Az Oracle platformja nem támogatja az Unió Alion ajánlatának használatát a következő helyzetekben.

Ha az utasítás első kérése a tételek listáján szereplő kifejezéseket tartalmaz, akkor hozzárendel egy pszeudonim oszlopot a javaslatként. Ezenkívül csak az üzemeltető utolsó kérése tartalmazhat a megrendelést. Például megkaphatja az összes egyedi áruházazonosítót (Store_ID), anélkül, hogy másolatokat adna a következő kérés használatával.

SELECT STOR_ID üzletekből UNION SELECT STOR_ID értékesítésből származó;

Postgresql

A PostgreSQL platform támogatja az Unió és az Unió kulcsszavainak szabványos Ansi szintaxisát.

az utasítások kiválasztása 2 Unió

A PostgreSQL platform nem támogatja az Unió és az Unió összes javaslatát a frissítéssel kapcsolatos lekérdezésekben. A PostgreSQL nem támogatja a megfelelő javaslatot. Az Unió különálló ajánlata nem támogatott, a funkcionális egyenérték az uniós javaslat.

Az üzemeltető első kérése nem tartalmazhat megrendelést vagy korlátozási ajánlatokat. Az uniós és az uniós kérések Minden ajánlat tartalmazhat ezeket a javaslatokat, de az ilyen kéréseket fel kell venni a zárójelben. Ellenkező esetben a jogot a jobb oldali jobb oldali rendelésre vonatkozik az egész műveletre.

Válassza ki az A.au_Lname-t a szerzőknek, ahol a.Au_Lnanie, mint a "P%" UNI0N Válassza ki az E.LName-t a munkavállalóhoz, ahol e.lname, mint a "p%";

SQL szerver

Az SQL Server platform támogatja a kulcsszavakat Unió és az Unió minden szabványos Ansi szintaxisát.

utasítás Válasszon 1 Uniót

az utasítások kiválasztása 2 Unió

Az SQL Server nem támogatja a megfelelő javaslatot. Az Unió különálló ajánlata nem támogatott, de a funkcionális egyenérték az uniós javaslat.

Az Unió és az Unió összes ajánlata segítségével a SELECT ... a kijelentésbe, de a kulcsszónak az egyesítő üzemeltető első kérésére kell lennie. Különleges kulcsszavak, mint például a Tor és a Csoport kiválasztása ... a kockával, minden egyes uniós lekérdezéshez használható. Mindazonáltal győződjön meg róla, hogy ezeket a javaslatokat minden egyes társulási kérelemben tartalmazza. Ha a SELECT TOR vagy GROUP-t használja ... a kocka segítségével egy lekérdezésben a művelet nem kerül végrehajtásra.

Az Unió összes kéréseinek azonos számú oszlopot kell tartalmaznia. Az adat oszlopok típusai nem kell azonosak, de implicit módon kell adni egymást. Például a Char és a Varchar oszlopok megosztása megengedett. Ha az SQL Server adatok megjelenik az adattípus típusának meghatározásakor, a legnagyobb oszlop mérete az eredménykészlet méretét használja. Tehát, ha a SELECT ... Union Manual Char (5) és Char (IO) oszlopokat használ, mindkét oszlop adatai megjelennek a char oszlopban (IO). A numerikus adattípusokat a legmagasabb pontossági típusként jeleníti meg.

Például a következő lekérdezés ötvözi a két független kérés eredményeit a csoport segítségével ... a ... a kockával.

A legtöbben SQL lekérdezések Egy üzemeltetőt használnak, amelyet egy vagy több táblázatból visszaküldik. Sql Lehetővé teszi, hogy egyszerre több külön lekérdezést végezzen, és megjelenítse az eredményt egyetlen adatkészletként. Az ilyen kombinált kéréseket általában hívják Kombinációk vagy Komplex kérések.

1. Az Unió üzemeltetőjének használata

Nyelvkérések Sql Kombinálva az üzemeltető segítségével Unió. Ehhez meg kell adnia az egyes kérést. Kiválaszt és tegyen egy kulcsszót közöttük Unió. Az alkalmazott üzemeltető számának korlátozása Unió Egy általános kérésben nincs kérelem. Az előző részben megjegyeztük, hogy Hozzáférés. nincs képes létrehozni Teljes külső szövetség, Most meglátjuk, hogyan érhető el az üzemeltetőn keresztül Unió.

Kiválaszt *
A Sumproduct balra csatlakozik az eladókhoz a Sumproduct.City \u003d eladók.City
Unió
Válassza a *

A Sumproduct jobbra csatlakozik az eladókhoz a Sumproduct.City \u003d eladók.City

Látjuk, hogy a kérelem elmozdította mind az első táblázat oszlopát - és a másikontól, függetlenül attól, hogy az összes rekord megfelelőséggel rendelkezik-e egy másik táblázatban.

Azt is érdemes megjegyezni, hogy sok esetben Unió Használhatjuk az ajánlatot Hol. Sok feltételekkel, és hasonló eredményt kap. Azonban, mivel Unió A rekordok inkább laconikusak és érthetőek. Szükség van bizonyos szabályok betartására is, amikor össze kell írni a kombinált lekérdezések írásakor:

  • vizsgálat Unió két vagy több szolgáltatót kell tartalmaznia Kiválasztegy kulcsszóval elválasztva Unió (azaz, ha a lekérdezés négy kiválasztási nyilatkozatot használ, három uniós kulcsszónak kell lennie)
  • minden kérés az üzemeltetőben Unió Ugyanazokkal az oszlopokkal, kifejezésekkel vagy statisztikai funkciókkal kell rendelkeznie, amelyek továbbá ugyanabban a sorrendben kell felsorolniuk
  • az oszlopok típusainak kompatibilisnek kell lenniük. Nem kell egy típusnak lennie, de hasonló típusúak kell lenniük Dbms Határozottan átalakíthatná őket (például különböző számadattípusok vagy különböző dátumok lehetnek).

2. Kapcsolja be vagy ki az ismétlődő vonalakat

Kérjen s. Unió Automatikusan törli az összes ismétlődő vonalat a lekérdezési eredménykészletből (vagyis javaslatokként viselkedik Hol. Az egyik üzemeltető több körülményével Kiválaszt). Az üzemeltető ilyen viselkedése Unió Alapértelmezés szerint, de ha szeretné, megváltoztathatjuk. Ehhez használnunk kell az üzemeltetőt Unió minden. helyette Unió.

3. Rendezze a kombinált lekérdezések eredményeit

Az üzemeltető végrehajtásának eredményei Kiválaszt rendezett ajánlat szerint Rendezés.. A kérések kombinálásakor Unió Csak egy mondat Rendezés. használható, és az utolsó üzemeltetőbe kell helyezni Kiválaszt. Valójában a gyakorlatban nincs különösebb az eredmény egy része, hogy rendezzen egy sorrendben, és a másik rész a másikban van. Ezért több mondat Rendezés. Nem lehet alkalmazni.

Az SQL Unió operátor ötvözi a kiválasztott két vagy több alkalmazás eredményét.

SQL Unió üzemeltetője

Az Unió üzemeltetőjét a kiválasztott két vagy több alkalmazás számos eredményének kombinálására használják.

Kérjük, vegye figyelembe, hogy az Unióban belüli minden egyes oszlopnak azonos számú oszlopmal kell rendelkeznie. Az oszlopoknak ugyanolyan adattípusokkal is rendelkezhetnek. Ezenkívül az egyes zeiestű oszlopoknak ugyanabban a sorrendben kell lenniük.

SQL Union szintaxis

Kiválaszt oszlopnév (ek) Tól től. asztal 1
Unió
Kiválaszt oszlopnév (ek) Tól től. 2. táblázat. ;

Megjegyzés: Az uniós kezelő csak különböző alapértékeket választ ki. Az ismétlődő értékek megoldásához használja az Alion kulcsszót.

SQL Unió Minden szintaxis

Kiválaszt oszlopnév (ek) Tól től. asztal 1
Unió minden.
Kiválaszt oszlopnév (ek) Tól től. 2. táblázat. ;

PS: Az oszlopok nevei a szövetségesek eredményeiben, általában szabályok szerint egyenlőek az Unió első zeest oszlopainak nevével.

Az adatbázis demo verziója

Ebben a leckében a jól ismert boreai adatbázist fogjuk használni.

Az alábbiakban az "ügyfelek" táblázatok kiválasztása:

Egyéni azonosító Ügyfél neve A kapcsolattartó személy Cím város Irányítószám Ország
1 Alfreds Futterkiste. Maria Anders. Obere str. 57. Berlin. 12209 Németország
2 Ana trujillo emparedados y helados Ana Trujillo. AVDA. De la Constitucional 2222 Mexikó D.F. 05021 Mexikó.
3 Antonio Moreno Taqueria Antonio Moreno. Mataderos 2312. Mexikó D.F. 05023 Mexikó.

És a "Szállítók" táblázatok közül választhat:

SQL Unió példa

A következő SQL - operátor választja az összeset különféle Városok (csak egyedi értékek) az "ügyfelek" és a "beszállítók" táblázatokból:

Megjegyzés: Az Unió nem használható a két asztal összes városainak listájához. Ha több ügyfél és beszállító, ugyanazok a városok, minden város csak egyszer lesz megadva. Az Unió csak bizonyos értékeket választ ki. Az Unió használatával az ismétlődő értékek közül választhat!

SQL Unió Minden példa

minden (Duplikált értékek) Az "ügyfelek" és a "beszállítók" táblázatokból származó városok is:

SQL Unió mindazon, ahol

A következő SQL - Operátor az Uniót használja az összes kiválasztásához minden (Duplikált értékek) is német Városok az "ügyfelek" és a "beszállítók" asztaloktól.

Az SQL Unió üzemeltető célja, hogy összekapcsolják a kapott adatbázis táblák használatával kapott SELECT szót. A kapott táblázatok kombinálásának feltétele: A szám egybeesése, az alábbi eljárás és az oszlopok adatainak típusa. A megrendelésnek az egyesülés eredményeire és a POST eredményeire vonatkozik, csak az összetett kérés végén. Az Unió üzemeltetője a következő szintaxissal rendelkezik:

SELECT_STOLBAM_NAMES (1..N) a NAME_TABLE Unióból Válassza ki a NAME_STOLBTSY (1..N) értéket a Nate_Table-től

Ebben a tervben az integrált kérelmek feltételei lehetnek a szekcióban, és nem rendelkezhetnek nekik. Az Unió üzemeltetőjének használatával kombinálhatja az adatgyűjtési kérelmeket mind az egyik asztalról, mind a különböző.

Ha az Unió szolgáltatóját szó nélkül használja, az eredmény nem tartalmaz más duplikátumokat, de az összes szóval, amely másolatokat tartalmaz.

Eredmények és egyedi értékek egy táblázatban az SQL Unió üzemeltetőjével

Az egyik kérés az oszlopok egyéni értékeiből származhat, például a vállalat munkatársai által kidolgozott évek, a bérek és mások mérete. Egy másik lekérdezés - használata Összesített funkciók - A részlegek, illetve a munkavállalók, illetve más pozíciók, illetve a foglalkoztatás éve szerinti bérek összegét kaphatjuk, vagy az üzemeltető által végzett csoportosítása).

És ha ugyanabban az asztalon kell eljutnunk, és az egyes értékek összefoglalását, valamint a végső értékeket? Itt az SQL Unió üzemeltetője a mentésre kerül, amellyel két kérés kombinálva van. Az egyesítés eredménye a megrendelésnek a megrendelés használatával történő alkalmazásra van szükség. Amelyre szükség van, jobban megértik a példákat.

1. példa. A vállalat adatbázisában van egy személyzeti asztal, amely adatokat tartalmaz a vállalat alkalmazottairól. A fizetési oszlopok (bérek), a munka (pozíció) és az évek (munkatapasztalat időtartama) vannak. Az első kérés az egyéni fizetésméretet adja meg, a pozíciók által megrendelt:

Válasszon nevet, munkát, fizetés a munkatársai munkából

Név.MunkaFizetés.
Sanders.Mgr.18357.5
Marenghi.Mgr.17506.8
PernalÉrtékesítés18171.2
OrvosÉrtékesítés12322.4
TényezőÉrtékesítés16228.7

A második kérelem visszaadja a teljes fizetést a hozzászólásokhoz. Már elkészítjük ezt a kérést, hogy csatlakozzunk az elsőhez, ezért emlékezzünk arra, hogy az összetett állapota megegyezik az oszlopok számával, a nevük egybeesésével, a következő és az adattípusok eljárásaival. Ezért bekapcsoljuk a táblázatot a Név oszlopban, amely tetszőleges értékkel "Z-Total" -vel rendelkezik az alábbi táblázatban:

Válassza ki a "Z-Total" nevet, Munka, összeg (fizetés), mint a munkatárs munkatársának fizetése

A lekérdezés eredménye az alábbi táblázat:

Név.MunkaFizetés.
Z-összesMgr.35864.3
Z-összesÉrtékesítés46722.3

Most kombinálja az uniós kezelővel rendelkező kéréseket, és alkalmazza a megrendelést az üzemeltető által a kombinációs eredményre. A csoport két oszlopot követ: a pozíció (feladat) és a név (név) a végleges (összes) értékekkel rendelkező sorokhoz, amelyben a névérték "Z-Total", az egyes értékek sorai alatt vannak. A lekérdezési eredmények kombinálásának a következők:

(Válassza ki a nevet, a munkát, a személyzetet a személyzetből) Unióhoz (válassza a "Z-Total" nevet, mint nevet, munkát, összeg (fizetés) a munkatársak munkatársai szerint)

Az uniós üzemeltetővel folytatott kérelem végrehajtásának eredménye az alábbi táblázat, amelyben minden egyes pozíciócsoport első sora tartalmazza az ebben a helyzetben dolgozó alkalmazottak teljes fizetését:

Név.MunkaFizetés.
Marenghi.Mgr.17506.8
Sanders.Mgr.18357.5
Z-összesMgr.35864.3
OrvosÉrtékesítés12322.4
TényezőÉrtékesítés16228.7
PernalÉrtékesítés18171.2
Z-összesÉrtékesítés46722.3

Írjon meg érdeklődést az Union használatával, majd nézze meg a döntést

2. példa. Az adatok megegyeznek az 1. példában, de a feladat egy kicsit bonyolultabb. Le kell hagynia ugyanazon a táblázatban, nemcsak az egyéni fizetési méreteket, a pozíciók által rendelt, a pozíciók teljes bérének, hanem a teljes munkavállaló teljes fizetését.

3. példa. A vállalat adatbázisában van egy személyzeti asztal, amely adatokat tartalmaz a vállalat alkalmazottairól. Név oszlopok (vezetéknév), Dept (divíziószám) és évek (munkaerő hossza).

Név.Adósság.Évek.
Sanders.20 7
Pernal20 8
Marenghi.38 5
Orvos20 5
Tényező38 8

Ugyanannál az asztalnál, az átlagos szakmai tapasztalat az osztályok és az egyes értékeket a munkavégzés időtartama tapasztalat alkalmazottak szerint csoportosított osztályok.

Az SQL Unió üzemeltetőjének egy asztalra történő egyesítési kérelmek kombinációja

4. példa. A vállalat adatbázisában van egy személyzeti asztal, amely adatokat tartalmaz a vállalat alkalmazottairól. A fizetési oszlopok (bérek), a munka (pozíció) és az évek (munkatapasztalat időtartama) vannak. Az első kérés szükséges a munkavállalói adatok megszerzéséhez, amely több mint 21 000 fizetés:

A lekérdezés eredménye az alábbi táblázat:

Most az adatok, amelyekben a két kérésben használt kiválasztási kritériumokat kombinálják. Kombináljuk az uniós üzemeltetőt használó kéréseket:

Az uniós szolgáltatóval folytatott kérelem végrehajtásának eredménye az alábbi táblázat:

IdézésNév.
10 Sanders.
30 Marenghi.
100 Plotz.
140 Fraye.
160 Molinare.
240 Daniels.
260 Jones

Az Unió üzemeltetőjének kérése nagyobb számú oszlopot küldhet vissza, fontos megismételni az oszlopok számát, a nyomon követési és adattípusok sorrendjét egybeesnek.

Először is kapjunk, hogy adatokat kapjunk a hirdetési kategóriák kategóriáiról és részeire, amelyekben több mint 100 hirdetést nyújtanak be hetente. A következő lekérdezést írjuk:

A lekérdezés eredménye az alábbi táblázat:

A lekérdezés eredménye az alábbi táblázat:

Most szeretné kivonni azokat az adatokat, amelyek megfelelnek a kritériumoknak és az első és a második kéréseknek. Kombináljuk az uniós üzemeltetőt használó kéréseket:

A lekérdezés eredménye az alábbi táblázat:

Az SQL Unió üzemeltetőjének használata két táblázathoz való kérelmek eredményeinek kombinálása

Eddig figyelembe vettük az uniós kezelővel rendelkező kérelmeket, amelyben az eredményeket egy táblázatból kombináltuk. Most kombináljuk a két táblázat eredményeit.

6. példa. Van egy adatbázis az építőanyagok raktárának. Táblázat tartalmazza a voyage adatokat. A Vinil táblázat tartalmazza az adatokat a vinyl háttérképen, a papír asztalról - a papír tapéta. Meg kell ismerni a háttérkép árairól szóló adatokat egy és egy másik táblából.

A Vinyl háttérképen lévő nem ismétlődő adatok kivonása, kérelmet nyújthat a különálló szóval:

Válasszon külön árat a Vinil-től

A lekérdezés eredménye az alábbi táblázat:

Most összeállítsa a kombinált kérést az Unió üzemeltetőjével:

Válassza a Különböző árat a Vinil Unióból Válassza ki a különböző árat a papírból

Mivel nem használjuk az összes szót, 400, 500 és 530 értékű duplikátumok nem jelennek meg. A lekérdezés eredménye az alábbi táblázat:

Ár
300
320
360
400
430
500
530
610
720
800
850

7. példa. Az adatbázis és a táblázatok megegyeznek az előző példában.

Meg kell szerezni az árak árait, beleértve az ismétlődőt is. Az uniós üzemeltetővel az eredmények kombinációjára vonatkozó kérelem hasonló lesz az előző példában szereplő kérelemhez, de csak az Unió helyett mindössze Uniót írunk:

Válassza a Különböző árat a Vinil Union-tól All Select külön árat a papírból

A lekérdezés eredménye az alábbi táblázat:

Ár
300
320
360
400
400
430
500
500
530
530
610
720
800
850

Az SQL Unió operátor használatával kombinálhatja mind az egyszerű lekérdezéseket, mind a subqueries-t tartalmazó kérelmek (befektetett kérelmek) . Tekintsük a megfelelő példát.

8. példa. Van egy "Színház" adatbázis. Az asztali adatokat tartalmaz a termelési adatok (nevek a Név oszlopban), a rendező táblázat - a rendezők a rendező (a FNAME oszlop - a nevét, az L-NAME oszlop - utolsó név). Az igazgató asztal elsődleges kulcsa - DIR_ID az igazgató azonosítója. DIR_ID is - a lejátszási táblázat külső kulcsa, az igazgató asztal elsődleges kulcsára utal. Szükség van a John Barton és a Trevor Nunn rendező előadóinak eltávolítására.

Döntés. Kombináljuk a két kérés eredményeit - az egyik visszatér a rendező John Barton, a másik - rendező Trevor Nunn. És mindegyik kombinált kérés a lejátszási táblázatban az igazgató asztalának supontjával történik, amely a DIR_ID-t a név és a vezetéknév igazgatója adja vissza. Minden külső kérelem elfogadja a DIR_ID kulcs értékét a csatolt kérésből, és visszaadja az előadások nevét (név):

Relációs adatbázisok és SQL nyelv



Tetszett a cikket? Oszd meg