Rezime

Ovaj članak govori o korišćenju spoja u programu Microsoft Query. Spoj je metod koji možete da koristite sa bazama podataka za definisanje i ilustraciju relacija između dve tabele. U programu Microsoft Query možete da kreirate i manipulišete različitim tipovima spoja. U mnogim slučajevima, Microsoft Query vam se pridružuje tabelama u upitu. Spojnice su predstavljene linijama koje povezuju tabele u oknu tabele. Teme obuhvaćene ovim člankom uključuju sledeće: What Is a Join? Inner Joins SQL Statements Outer Joins Subtract Joins Full Outer Joins Self Joins Equi-Joins Natural Joins Cartesian Products

Više informacija

Љta je spoj?

Spoj je veza između dve tabele u kojoj su dve tabele objedinjene u skladu sa poljem koje im je zajedničko, kreirajući novu virtuelnu tabelu (koja se može sačuvati kao stvarna tabela). Na primer, sa sledeće dve tabele: Color_Table: Join_Field Color_Field 1 Red 2 Blue 3 Green Pattern_Table: Join_Field Pattern_Field 2 Striped 3 Checkered 4 Polka-Dot jednostavan spoj podseća na sledeće: Join_Field Color_Field Pattern_Field 2 Blue Striped 3 Green Checkered Tabela rezultata sadrži samo zapise 2 i 3 u polju Join_Field zato što su to jedini zapisi koji postoje i u Color_Table i u Pattern_Table. Praktičan primer spoja je lista proizvoda i proizvođača; tabela "Proizvodi" i tabeli "Dobavljači" mogu biti spojeni u polju "ID proizvoda".

Unutrašnji spoj

Spoj u prethodnom primeru, koji se naziva unutrašnji spoj, je najjednostavniji tip spoja. Obično želite da koristite samo delić polja u tabelama. Na primer, u pravom unutrašnjem spoju, kao što je onaj iznad, možda ćete želeti da Join_Field, tako da spoj izgleda ovako: Color_Field Pattern_Field Blue Striped Green Checkered U programu Microsoft Query, unutrašnji spoje su podrazumevani tip spoja (za više informacija pogledajte stranicu 105 u "Vodiču za korisnike Microsoft upita", verzija 1.0).

SQL saopštenje

Izjavu "Structured Query Language( SQL) SELECT je tip makroa koji možete da koristite prilikom kreiranja spoja. Imajte na umu da se SQL veoma razlikuje od ostalih jezika makroa programa Microsoft Excel (Visual Basic for Applications i jezika makroa programa Excel 4.0). Nije potrebno razumeti SQL da biste lako kreirali spojne programe u programu Microsoft Query. Svaki spoj ima izjavu SELECT koja je povezana sa njom. Izjavu SELECT za bilo koji spoj u programu Microsoft Query možete da prikažete tako što ćete na traci sa alatkama kliknuti na dugme "SQL". Kao i kod microsoft Excel zapisnika makroa, query možete da koristite za zapisivač izjavu SELECT. Za razliku od snimača makroa programa Microsoft Excel, snimač SELECT vodova je uvek uključen i ne može se isključiti. Evo kako bi izjavu SELECT mogla da izgleda u programu Microsoft Query za navedeni unutrašnji spoj: SELECT Color_Table.Color_Field, Pattern_Table.Pattern_Field FROM `c:\database`.Color_Table, `c:\database`.Pattern_Table WHERE Color_Table.Join_Field = Pattern_Table.Join_Field Imajte na umu da koristimo ime baze podataka "C:\database" čija je .mdb oznaka tipa datoteke za Microsoft Access bazu podataka, koja može da ima više tabela u jednoj datoteci. U nekim drugim bazama podataka, kao što su dBASE, Paradox i FoxPro, svaka tabela mora da ima svoju datoteku. U ovim slučajevima, SQL sintaksa može izgledati suvišno jer je ime tabele uvek isto kao ime datoteke bez oznake tipa datoteke. SQL sintaksa varira između motora koji se upitom; na primer, u programu Microsoft Access upit iz gorenavedenog primera podseća na sledeće: SELECT Color_Table.[Color_Field], Pattern_Table.Pattern_Field FROM Pattern_Table INNER JOIN Color_Table ON Pattern_Table.[Join_Field] = Color_Table.[Join_Field]; Putanja do tabele se ne koristi u programu Microsoft Access zato što se tabela nalazi u Microsoft Access .mdb datoteci. Čak i ako je spoljna tabela priložena i korišćena u upitu, Microsoft Access SQL vodja ne prikazuje putanju do spoljne tabele.

The Outer Join

Druga vrsta spoja se zove outer spoj. Sa udruženjem sa izlazom, sve zapise dobijate iz jedne tabele i samo one zapise iz druge tabele koji imaju vrednosti koje se podudaraju iz prve tabele. Ovo može ostaviti neke od stavki polja prazne ili "Null". Da bi bilo koja dva stola bila spojena, postoje dva moguća outer spoja, "levi auter spoj" i "desni autni spoj", (takozvano zato što obično pregledate tabele jedna pored druge). Koristeći prethodne dve tabele u primeru, sledi jedan od dva moguća outer spoja: Join_Field Color_Field Pattern_Field 1 Red (NULL) 2 Blue Striped 3 Green Checkered Drugi mogući spoj je sledeći: Join_Field Color_Field Pattern_Field 2 Blue Striped 3 Green Checkered 4 (NULL) Polka-Dot NAPOMENA: U spoju ne vidite reč "NULL" kada pregledate podatke; koristite ključnu reč "NULL" kada radite sa spojima. U programu Microsoft Query obe vrste outer spoja mogu lako da se kreiraju pomoću miša (za više informacija o ovoj proceduri pogledajte stranicu 112 "Vodiča za korisnike Microsoft upita", verzija 1.0). Sledi kako SQL vod može potražiti drugi primer outer spoja: SELECT Color_Table.Color_Field, Pattern_Table.Pattern_Field FROM {oj `c:\database`.Color_Table LEFT OUTER JOIN `c:\database`.Pattern_Table ON Color_Table.Join_Field = Pattern_Table.Join_Field} Da biste kreirali praktičan primer outer spoja, napravite listu proizvoda preduzeća sa ciframa prodaje za proizvode koji su prodati, ali ne isključujući proizvode koji nisu prodati. Da biste to poеšli, koristite polje "ID proizvoda" da biste se pridružili tabeli "Proizvodi" i tabeli "Prodaja".

Oduzimanje spoja

Treжa vrsta pridruћiжenja je oduzimanje spoja. A subtract join is the opposite of an outer join; on uključuje samo one zapise u jednu tabelu koji se ne podudaraju ni sa jednim zapisom u drugoj tabeli. Kao i udruženja, postoje dva moguća oduzimanja spoja za sve dve tabele kojima želite da se pridružite; Međutim, obično se ne zovu "Levi oduzimanje pridruženja" ili "Pripoji se desnom". Oduzimanje spoja obično vraća polja iz samo jedne tabele, jer po definiciji polja druge tabele vraćaju samo NULL vrednosti. Sledi jedan mogući oduzimanje spoja: join_Field Color_Field 1 Red A ovde je drugi: Join_Field Pattern_Field 4 Polka-Dot U programu Microsoft Query, oduzimanje spoja se kreira tako što se prvo kreira autni spoj, a zatim pomoću kriterijuma "IS NULL" na odgovarajućem polju (Pattern_Field u prvom gorenavedenom primeru; Color_Field u drugom primeru) da biste isključili zapise koji se podudaraju između tabela. Sledi način na koji SQL vod može potražiti prvo oduzimanje gore navedenog: SELECT Color_Table.Join_Field, Color_Table.Color_Field FROM {oj `c:\database`.Color_Table LEFT OUTER JOIN `c:\database`.Pattern_Table ON Color_Table.Join_Field = Pattern_Table.Join_Field} WHERE (Pattern_Table.Pattern_Field Is Null) Da biste kreirali praktičan primer oduzimanja spoja, lista kupaca koji nisu nedavno poručili. Da biste to poеšli, koristite polje "ID porudžbine" da biste se pridružili tabeli "Kupci" i tabeli "Porudžbine".

Potpuno outer spoj

Иetvrta vrsta pridruћi se punom autћiљu. Kompletan autsežni spoj je kombinacija outer spoja sa besplatnim oduzimanjem. Kompletan outer spoj uključuje sve zapise iz obe tabele i objedinjuje one zapise koji su uobičajeni između dve tabele. Sledi kompletan autsežni spoj: Join_Field Color_Field Pattern_Field 1 Red (NULL) 2 Blue Striped 3 Green Checkered 4 (NULL) Polka-Dot U programu Microsoft Query, potpuni auter spoj se kreira umetanjem operatora UNION u sopstvenu liniju između izjave SELECT grupe outer i izumiranje izjavu SELECT zajednice (pogledajte iznad). Da biste kreirali potpuno outer spoj u programu Microsoft Query, koristite sledeće korake da biste kreirali odgovarajuću SQL rečenicu:

  1. Kreirajte aut, a zatim u meniju "Datoteka" izaberite stavku "Novo" i kreirajte oduzimanje spoja.

  2. Kopirajte SQL oduzetog spoja.

  3. Prebacite se na outer spoj, upišite reč UNION na sopstvenu liniju ispod SQL izjave za outer pridruživanje, nalepite SQL oduzimanja ispod reči UNION i zatvorite prozor oduzetog spoja.

Napomena Rezultati sledeće tabele propuštaju vrednost Join_Field"Pattern_Table Join_Field. Dole navedena SQL rečenica ne bira polje Pattern_Table.John_Field. Join_Field Color_Field Pattern_Field (NULL) Polka-Dot 1 Red (NULL) 2 Blue Striped 3 Green Checkered Evo kako SQL može da izgleda za navedeni potpuni auter (komande ispod operatora UNION su nalepjene): SELECT Color_Table.Join_Field, Color_Table.Color_Field, Pattern_Table.Pattern_Field FROM {oj `C:\database`.Pattern_Table LEFT OUTER JOIN `C:\database`.Color_Table ON Color_Table.Join_Field = Pattern_Table.Join_Field} UNION SELECT Color_Table.Join_Field, Color_Table.Color_Field, Pattern_Table.Pattern_Field FROM {oj `C:\database`.Color_Table LEFT OUTER JOIN `C:\database`.Pattern_Table ON Color_Table.Join_Field = Pattern_Table.Join_Field} WHERE (Color_Table.Color_Field Is Null) or(Pattern_Table.Pattern_Field Is Null) Da biste kreirali praktičan primer potpunog udruživanja, objedinite preklapajuće liste kupaca koje koriste različita odeljenja, uključujući brojeve faksa (koji su bili samo na prvoj listi) i imena Internet e-pošte (koja se samo na drugoj listi). Svako odeljenje može da nastavi da koristi svoju delimičnu listu dok je dostupna kompletna, pridružena lista. Mogu se pridružiti na polju ID kupca.

Samosaući

Peta vrsta spoja je samosauжa. Samosautoje je veza u kojoj se polje u tabeli podudara sa drugim poljem u kopiji iste tabele. Koristeći ovu tabelu primera: Table_Three Employee_ID Employee_Name Reports_To 1 Bob 3 2 Sue (NULL) 3 Jim 2 4 Jane 3 kopiju, na sledeći način: Table_Three_01 Employee_ID Employee_Name Reports_To 1 Bob 3 2 Sue (NULL) 3 Jim 2 4 Jane 3 Samosaukanje bi moglo da se koristi za kreiranje liste imena zaposlenih sa imenima njihovih supervizora. 2018. Employee_ID. Table_Three Table_Three_01 Reports_To. U početku bi to moglo da izgleda sledeće: Employee_Name Employee_Name Bob Jim Sue (NULL) Jim Sue Jane Jim Međutim, pošto je zbunjujuće imati isto ime polja za oba polja, promenite jedno od imena polja na sledeći način: Employee_Name Supervisor Bob Jim Sue (NULL) Jim Sue Jane Jim Sledi način na koji SQL može da izgleda za gore navedenim samospošolim: SELECT table_three.Employee_Name, table_three_01.Employee_Name 'Supervisor' FROM `c:\database`.table_three, `c:\database`.table_three_01 WHERE table_three.Employee_ID = table_three_01.Reports_To Kada vratite podatke u Microsoft Excel, nije od koristi preimenovanje polja u programu Microsoft Query. To je tačno zato što Microsoft Excel koristi originalno ime polja. Za više informacija o ovom problemu pogledajte sledeći članak u Microsoft bazi znanja: 121551 : XL5: Polje umesto imena kolone u MSQUERY Vraćeno u Excel Microsoft Excel makro mora da promeni ime kolone svaki put kada se vraćeni podaci osveže (osim ako ne vratite podatke u izvedenu tabelu, u tom slučaju sama izvedena tabela može da kreira i zadrži prilagođeno ime polja).

Equi-Join i Natural Join

Skoro svi spojovi, uključujući sve primere koji su do sada dati, su ravnopravni spoj i prirodni spoj. Značenja ovih termina nisu od velikog značaja za prosečnog korisnika programa Microsoft Query, ali sledeća dva pasusa pokušavaju da objasne uslove za one koji su možda radoznali. Ravnopravni spoj je spoj u kojem se zapisi preuzimaju na osnovu toga da li polja spoja imaju vrednosti koje se podudaraju u obe tabele. To moћda izgleda kao definicija spoja, ali nije. Primer nejdomežnog spoja je spoj u kojem su zapisi u prvoj tabeli spojeni sa zapisima u drugoj tabeli u kojima je spojeni polje u prvoj tabeli veće od (umesto jednako) spojenog polja u drugoj tabeli (ili manje nego ili bilo čega drugog). Naravno, ovo vraća više zapisa nego ravnopravno pridruživanje. Prirodni spoj je onaj u kome se vraća samo jedno od spojena polja dva stola. Pošto su ova dva polja po definiciji identična u ravnopravnom spoju, suvišno je uključiti oba. Za nejespravan spoj, važno je uključiti oba ta polja. Dakle, ravno-spoje i prirodni spoj idu zajedno. Želeli biste da ravnopravni spojovi (koji opisuju većinu spoja) budu prirodni spoj tako što ćete vratiti samo jedno od spojena polja; ali, ako ikada koristite ne-ravnopravni spoj, možda ćete želeti da ga učinite neprirodnim spojem tako što ćete vratiti oba spojena polja. Postoje i druge vrste spoja. Kompletan spektar spoja poslednji put je definisan 1992. Neki spojovi nisu važni korisnicima programa Microsoft Excel zato što ovi spojovi rade stvari koje je lakše uraditi u programu Microsoft Excel.

Kartesijski proizvod

Pokušaj vraćanja podataka iz dve ili više tabela bez ikakvih spoja stvara ono što se zove "Kartesijski proizvod". Kartesijski proizvod se definiše kao sve moguće kombinacije redova u svim tabelama. Uverite se da ste imali spojne podatke pre nego što pokušate da vratite podatke, jer cartesijski proizvod u tabelama sa mnogo zapisa i/ili u mnogim tabelama može da se dovrši nekoliko sati. Sledi Kartesijski proizvod koji se koristi u dve tabele primera; imajte na umu da je ova tabela samo 3 zapisa puta 3 zapisa, što daje ukupno 9 zapisa. Međutim, zamislite da je umesto toga tabela imala 100 zapisa puta više od 1.000 zapisa puta više od 10.000 zapisa; Onda bi tabela sadrћala 1000.000.000 ploиa! Join_Field Join_Field Color_Field Pattern_Field 1 2 Red Striped 1 3 Red Checkered 1 4 Red Polka-Dot 2 2 Blue Striped 2 3 Blue Checkered 2 4 Blue Polka-Dot 3 2 Green Striped 3 3 Green Checkered 3 4 Green Polka-Dot Povremeno, neki korisnici žele da koriste Cartesian proizvod; međutim, većina korisnika koji ih dobiju to rade slučajno i često ih zbune. Pošto većina korisnika isključuje većinu polja u spoju, pravi Cartesian proizvod lako može da izgleda zbunjujuće kao što je ovo: Color_Field Red Red Red Blue Blue Blue Green Green Green Ako se u ovaj zapis doda 100 Pattern_Table zapisa, ovaj upit će imati 309 zapisa (po 103 zapisa "Crveno, plavo" i "Zeleno"). Kartesijski proizvodi imaju relativno jednostavne SELECT izjave. Sledi kako SQL može da potražite navedeni Cartesian proizvod: SELECT Color_Table.Color_Field, Pattern_Table.Pattern_Field FROM `c:\database`.Color_Table, `c:\database`.Pattern_Table Praktičan primer Kartesijskog proizvoda bio bi kreiranje liste svih mogućih kombinacija opcija na robnom proizvodu, sa ukupnim cenama za svaku kombinaciju.

Reference

Microsoft Query "Vodič za korisnike", verzija 1.0, stranice 101-114, 123-131 Sledeće dve knjige nisu uključene ni u jedan Microsoft proizvod i ne proizvodi ih Microsoft. Proizvode nezavisnih strana o kojima se ovde govori proizvode prodavci nezavisno od korporacije Microsoft; ne garantujemo, podrazumevamo ili na drugi način, u vezi sa učinkom ili pouzdanošću ovih proizvoda. "Razumevanje novog SQL-a: Kompletan vodič", Morgan Kaufmann Publishers, Inc., 1993. "SQL Joe Celko za pameti: Napredni SQL program", Morgan Kaufmann Publishers, Inc., 1995. Za više informacija o kreiranju spoja u programu Microsoft Query odaberite dugme "Pretraži" u pomoći i išite: joins, overview

Da li vam je potrebna dodatna pomoć?

Želite još opcija?

Istražite pogodnosti pretplate, pregledajte kurseve za obuku, saznajte kako da obezbedite uređaj i još mnogo toga.

Zajednice vam pomažu da postavljate pitanja i odgovarate na pitanja, dajete povratne informacije i čujete mišljenje od stručnjaka sa bogatim znanjem.