Oglas
Microsoft Access je verjetno najmočnejše orodje v celotnem paketu Office Office, vendar mistificira (in včasih prestraši) uporabnike sistema Office Office. Kako naj bi si s strmo krivuljo učenja kot Word ali Excel privoščil glavo za uporabo tega orodja? Ta teden, Bruce Epper si bo ogledal nekaj vprašanj, ki jih je to vprašanje spodbudilo pri enem od naših bralcev.
Bralec vpraša:
Imam težave s pisanjem poizvedbe v programu Microsoft Access.
Imam bazo podatkov z dvema tabelama izdelkov, ki vsebuje skupni stolpec s številčno kodo izdelka in s tem povezano ime izdelka.
Želim izvedeti, katere izdelke iz tabele A lahko najdete v tabeli B. Želim dodati stolpec z imenom Rezultati, ki vsebuje ime izdelka iz tabele A, če obstaja, in ime izdelka iz tabele B, če ga ni v tabeli A.
Imate kakšen nasvet?
Bruceov odgovor:
Microsoft Access je sistem za upravljanje podatkovnih baz (DBMS), zasnovan za uporabo v sistemih Windows in Mac. Za obdelavo in shranjevanje podatkov uporablja Microsoftov mehanizem podatkovnih baz Jet. Uporabnikom ponuja tudi grafični vmesnik, kar skoraj odpravi potrebo po razumevanju strukturiranega jezika poizvedb (SQL).
SQL je ukazni jezik, ki se uporablja za dodajanje, brisanje, posodabljanje in vračanje informacij, shranjenih v baze podatkov kot tudi spreminjanje osnovnih komponent baze podatkov, kot so dodajanje, brisanje ali spreminjanje tabel ali indeksi.
Izhodišče
Če še ne poznate Accessa ali drugega RDBMS-a, predlagam, da začnete s temi viri, preden nadaljujete:
- Kaj je torej baza podatkov? Kaj je torej baza podatkov? [MakeUseOf pojasnjuje]Za programerja ali tehnološkega navdušenca je koncept baze podatkov nekaj, kar je res lahko samoumevno. Vendar pa je mnogim ljudem pojem baze podatkov nekoliko tuj ... Preberi več kjer Ryan Dube uporablja Excel za prikaz osnov relacijskih baz podatkov.
- Kratek vodič za začetek uporabe Microsoft Access 2007 Kratek vodič za začetek uporabe Microsoft Access 2007 Preberi več ki je pregled dostopa na visoki ravni in komponent, ki vsebujejo bazo podatkov Access.
- Hitra navodila za tabele v programu Microsoft Access 2007 Hitra navodila za tabele v programu Microsoft Access 2007 Preberi več si ogleduje ustvarjanje svoje prve baze podatkov in tabel za shranjevanje vaših strukturiranih podatkov.
- Hitri vodnik o poizvedbah v programu Microsoft Access 2007 Hitri vodnik o poizvedbah v programu Microsoft Access 2007 Preberi več preučuje sredstva za vrnitev določenih delov podatkov, shranjenih v tabelah baze podatkov.
Osnovno razumevanje konceptov v teh člankih bo naslednje nekoliko olajšalo prebavo.
Razmerja in normalizacija podatkovnih baz
Predstavljajte si, da vodite podjetje, ki prodaja 50 različnih vrst pripomočkov po vsem svetu. Imate 1.250 odjemalcev in v povprečnem mesecu prodate 10.000 pripomočkov tem strankam. Trenutno uporabljate eno preglednico za sledenje vseh teh prodaj - učinkovito eno tabelo baze podatkov. Vsako leto v vašo preglednico doda na tisoče vrstic.
Zgornje slike so del preglednice za sledenje naročil, ki jo uporabljate. Zdaj recite, da obe stranki od vas kupita pripomočke večkrat letno, tako da imate za oba veliko več vrstic.
Če se Joan Smith poroči s Tedom Bainesom in prevzame njegov priimek, je treba zdaj spremeniti vsako posamezno vrstico, ki vsebuje njeno ime. Težava je zapletena, če imate dve različni odjemalci z imenom "Joan Smith". Pravkar je postalo veliko težje ohranjati svoje prodajne podatke zaradi dokaj pogostega dogodka.
Z uporabo baze podatkov in normalizacijo podatkov lahko ločimo elemente v več tabel, kot so zaloge, odjemalci in naročila.
Z ogledom dela stranke v našem primeru bomo odstranili stolpce za ime in naslov stranke in jih dali v novo tabelo. Na zgornji sliki sem tudi bolje razčlenil stvari za bolj natančen dostop do podatkov. Nova tabela vsebuje tudi stolpec za primarni ključ (ClientID) - številko, ki bo uporabljena za dostop do vsake vrstice v tej tabeli.
V izvirni tabeli, kjer smo te podatke odstranili, bi dodali stolpec za tuji ključ (ClientID), ki je povezava do ustrezne vrstice, ki vsebuje podatke za to stranko.
Zdaj, ko Joan Smith spremeni ime v Joan Baines, je treba spremembo opraviti samo enkrat v tabeli Client. Vsaka druga referenca iz združenih tabel bo izvlekla ustrezno ime odjemalca in poročilo, ki je videti, za kaj je Joan kupila zadnjih 5 let bo prejel vsa naročila pod svojimi dekliškimi in poročenimi imeni, ne da bi bilo treba spremeniti, kako je poročilo ustvarjen.
Kot dodatna korist to zmanjšuje tudi skupno količino zaužite skladišča.
Vključite se v vrste
SQL definira pet različnih vrst združevanja: INNER, LEFT OUTER, Right WUTER, FULL OUTER in CROSS. Ključna beseda OUTER v stavku SQL ni obvezna.
Microsoft Access dovoljuje uporabo INNER (privzeto), LEVO ZUNANJE, DESNO ZUNANJE in CROSS. FULL OUTER kot taka ni podprta, vendar lahko z uporabo LEFT OUTER, UNION ALL in DESNO OUTER ponaredite za ceno več ciklov CPU in I / O operacij.
Izhod povezave CROSS vsebuje vsako vrstico leve tabele, seznanjene z vsako vrstico desne tabele. Edini čas, ko sem kdaj videl uporabljeno povezavo CROSS, je med testiranjem obremenitev strežnikov baz podatkov.
Oglejmo si, kako delujejo osnovne povezave, potem pa jih bomo prilagodili svojim potrebam.
Začnimo z ustvarjanjem dveh tabel ProdA in ProdB z naslednjimi oblikovnimi lastnostmi.
AutoNumber je samodejno povečanje dolgih celih števil, dodeljenih vnosom, ko so dodani v tabelo. Možnost Text ni bila spremenjena, zato bo sprejela besedilni niz do 255 znakov.
Zdaj jih napolnite z nekaj podatki.
Za prikaz razlik v delovanju treh vrst pridruževanja sem iz ProdA izbrisal vnose 1, 5 in 8.
Nato ustvarite novo poizvedbo Ustvari> Oblikovanje poizvedb. Izberite obe tabeli v pogovornem oknu Prikaži tabelo in kliknite Dodaj, torej Zapri.
V tabeli ProdA kliknite ProductID, povlecite ga v ProductID v tabeli ProdB in spustite miškin gumb, da ustvarite odnos med tabelama.
Z desno miškino tipko kliknite vrstico med tabelami, ki predstavljajo razmerje med postavkami in izberite Pridruži lastnosti.
Privzeto je izbran tip pridruževanja 1 (INNER). Možnost 2 je združevanje LEVO ZUNANJE in 3 je združitev DESNO ZUNANJE.
Najprej si bomo ogledali priključitev INNER-ja, zato kliknite V redu, če želite opustiti pogovorno okno.
V oblikovalcu poizvedb na spustnih seznamih izberite polja, ki jih želimo videti.
Ko poženemo poizvedbo (rdeči klicaj na traku), bo iz obeh tabel prikazano polje ProductName z vrednostjo iz tabele ProdA v prvem stolpcu in ProdB v drugem.
Opazite, da rezultati prikazujejo vrednosti le, če je ProductID v obeh tabelah enak. Čeprav je v tabeli ProdB vnos za ProductID = 1, se v rezultatih ne prikaže, ker ProductID = 1 v tabeli ProdA ne obstaja. Enako velja za ProductID = 11. Obstaja v tabeli ProdA, ne pa v tabeli ProdB.
S pritiskom gumba Prikaži na traku in preklopom na SQL pogled si lahko ogledate poizvedbo SQL, ki jo je ustvaril oblikovalec, ki je uporabil te rezultate.
IZBERITE ProdA.ProductName, ProdB.ProductName IZ PRODA INNER PRIDRUŽITE SE ProdB ON ProdA.ProductID = ProdB.ProductID;
Če se vrnete nazaj v Design Design, spremenite vrsto pridruževanja v 2 (LEFT OUTER). Zaženite poizvedbo, če želite videti rezultate.
Kot lahko vidite, je vsak vnos v tabeli ProdA predstavljen v rezultatih, medtem ko so v rezultatih prikazani samo tisti v ProdB, ki imajo v tabeli ProdB ustrezen vnos ProductID.
Prazen prostor v stolpcu ProdB.ProductName je posebna vrednost (NULL), ker v tabeli ProdB ni ustrezne vrednosti. To se bo pozneje izkazalo za pomembno.
IZBERITE ProdA.ProductName, ProdB.ProductName IZ ProdA LEVO PRIDRUŽITE SE ProdB ON ProdA.ProductID = ProdB.ProductID;
Poskusite isto s tretjo vrsto priključitve (DESNO ZUNAJ).
Rezultati prikazujejo vse od tabele ProdB, medtem ko prikazuje prazne (znane kot NULL) vrednosti, kjer tabela ProdA nima ustrezne vrednosti. Zaenkrat nas to najbolj približa rezultatom, ki so želeni v bralčevem vprašanju.
IZBERITE ProdA.ProductName, ProdB.ProductName IZ PRODA DESNO PRIDRUŽITE se ProdB ON ProdA.ProductID = ProdB.ProductID;
Uporaba funkcij v poizvedbi
Rezultate funkcije lahko vrnete tudi kot del poizvedbe. Želimo, da se v našem nizu rezultatov prikaže nov stolpec z imenom »Rezultati«. Njegova vrednost bo vsebina stolpca ProductName tabele ProdA, če ima ProdA vrednost (ni NULL), sicer jo je treba vzeti iz tabele ProdB.
Za ustvarjanje tega rezultata lahko uporabite funkcijo Takoj IF (IIF). Funkcija ima tri parametre. Prvi je pogoj, ki mora biti ocenjen na vrednost True ali False. Drugi parameter je vrednost, ki jo je treba vrniti, če je pogoj True, tretji parameter pa je vrednost, ki jo je treba vrniti, če je pogoj false.
Celoten funkcijski konstrukt za naše razmere izgleda takole:
IIF (ProdA.ProductID ni nič, ProdB.ProductName, ProdA.ProductName)
Upoštevajte, da parameter pogoja ne preverja enakosti. Null vrednost v bazi podatkov nima vrednosti, ki bi jo lahko primerjali z katero koli drugo vrednostjo, vključno z drugo Null. Z drugimi besedami, Null ne pomeni Null. Vedno. Da bi to presegli, namesto tega preverimo vrednost s ključno besedo »Je«.
Lahko bi uporabili tudi „Is Not Null“ in spremenili vrstni red parametrov True in False, da smo dosegli enak rezultat.
Ko to vstavite v Oblikovalnika poizvedb, morate vnesti celotno funkcijo v vnos Field:. Če želite ustvariti stolpec »Rezultati«, morate uporabiti vzdevek. Če želite to narediti, predgovorite funkcijo z »Rezultati:«, kot je razvidno iz naslednjega posnetka zaslona.
Enakovredna koda SQL za to bi bila:
SELECT ProdA.ProductName, ProdB.ProductName, IIF (ProdA.ProductID is null, ProdB.ProductName, ProdA.ProductName) AS Rezultati IZ ProdA DESNO PRIDRUŽITE se ProdB ON ProdA.ProductID = ProdB.ProductID;
Ko bomo izvedli to poizvedbo, bo ustvaril te rezultate.
Tu vidimo za vsak vnos, kjer ima tabela ProdA vrednost, ta vrednost se odraža v stolpcu Rezultati. Če v tabeli ProdA ni vnosa, se vnos iz ProdB prikaže v rezultatih, kar je natančno zastavil naš bralec.
Če želite več virov za učenje Microsoftovega dostopa, poglejte Joel Lee Kako naučiti Microsoftov dostop: 5 brezplačnih spletnih virov Kako naučiti Microsoftov dostop: 5 brezplačnih spletnih virovAli morate upravljati veliko količino podatkov? Morali bi pogledati v Microsoftov dostop. Naši brezplačni viri za učenje vam lahko pomagajo, da začnete in se naučite veščin za bolj zapletene projekte. Preberi več .
Bruce se z elektroniko igra od 70. let naprej, z računalniki od zgodnjih 80-ih let in natančno odgovarja na vprašanja o tehnologiji, ki jih ves čas ni uporabljal niti videl. Prav tako se moti, ker poskuša igrati kitaro.