Реклама
Мицрософт Аццесс је вјероватно најмоћнији алат у читавом пакету Мицрософт Оффице-а, али мистифицира (а понекад и плаши) кориснике Оффице Оффице-а. Са стрмијом кривуљом учења од Ворд-а или Екцел-а, како неко треба да се обавија око употребе овог алата? Ове недеље, Бруце Еппер погледаће нека од питања која је ово питање покренуло од једног од наших читалаца.
Читалац пита:
Имам проблема са писањем упита у програму Мицрософт Аццесс.
Имам базу података са две табеле производа која садржи заједнички ступац с нумеричким шифром производа и припадајућим називом производа.
Желим да откријем који се производи из Табеле А могу наћи у Табели Б. Желим да додам ступац под називом Резултати који садржи назив производа из табеле А ако постоји, и назив производа из табеле Б када га не постоји у табели А.
Имате ли какав савјет?
Бруцеов одговор:
Мицрософт Аццесс је систем за управљање базама података (ДБМС) дизајниран за употребу на Виндовс и Мац машинама. Користи Мицрософтов погон Јет базе података за обраду и складиштење података. Такође нуди графичко сучеље за кориснике што скоро елиминише потребу за разумевањем структурираног језика упита (СКЛ).
СКЛ је командни језик који се користи за додавање, брисање, ажурирање и враћање информација сачуваних у базе података као и измене основних компоненти базе података као што су додавање, брисање или модификација табела или индекси.
Полазна тачка
Ако већ немате неко познавање Приступа или неког другог РДБМС-а, предлажем вам да започнете са овим ресурсима пре него што наставите:
- Па шта је база података? Па шта је уопште база података? [МакеУсеОф објашњава]За програмера или љубитеља технологије концепт базе података је нешто што се заиста може схватити здраво за готово. Међутим, многима је појам саме базе података помало страни ... Опширније где Риан Дубе користи Екцел да покаже основе релацијских база података.
- Кратки водич за почетак рада с Мицрософт Аццесс 2007 Кратки водич за почетак рада с Мицрософт Аццесс 2007 Опширније који је преглед приступа на високом нивоу и компоненти које садрже Аццесс базу података.
- Кратки водич за табеле у програму Мицрософт Аццесс 2007 Кратки водич за табеле у програму Мицрософт Аццесс 2007 Опширније проучава креирање своје прве базе података и табела за чување ваших структурираних података.
- Кратки водич о упитима у програму Мицрософт Аццесс 2007 Кратки водич о упитима у програму Мицрософт Аццесс 2007 Опширније гледа на средства за враћање одређених дијелова података похрањених у таблицама база података.
Основно разумевање концепата у овим чланцима учиниће следеће мало лакшим за варење.
Односи и нормализација база података
Замислите да имате компанију која продаје 50 различитих врста видгета широм света. Имате клијентску базу од 1.250 и у просечном месецу продате 10.000 видгета тим клијентима. Тренутно користите једну прорачунску таблицу да бисте пратили све ове продаје - ефективно једну табелу базе података. Сваке године додате хиљаде редака у вашу табелу.
Горе наведене слике дио су прорачунске табеле за праћење налога које користите. Сада реците да оба ова клијента купују видгете од вас неколико пута годишње тако да имате много више реда за оба.
Ако се Јоан Смитх удала за Теда Баинеса и узела му презиме, сваки ред који садржи њено име сада треба променити. Проблем се усложњава ако имате два различита клијента са именом 'Јоан Смитх'. Управо је постало много теже одржавати податке о продаји доследним због прилично уобичајеног догађаја.
Коришћењем базе података и нормализацијом података, можемо раздвојити ставке у више табела, као што су инвентар, клијенти и поруџбине.
Само гледајући део клијента из нашег примера, уклонили бисмо ступце за име клијента и адресу клијента и ставили их у нову табелу. На горњој слици сам такође боље разградио ствари ради детаљнијег приступа подацима. Нова табела такође садржи ступац за примарни кључ (ЦлиентИД) - број који ће се користити за приступ сваком реду у овој табели.
У оригиналној табели где смо уклонили ове податке, ми бисмо додали ступац за страни кључ (ЦлиентИД), који повезује у одговарајући ред који садржи информације за овог одређеног клијента.
Сада, када Јоан Смитх мења име у Јоан Баинес, промену је потребно извршити само једном у табели клијента. Свака друга референца из придружених табела ће извући одговарајуће име клијента и извештај који гледа на шта је Јоан купила у последњих 5 година добиће се све наруџбе под и њеним девојачким и венчаним именима, а да не треба да мења начин извештаја генерисан.
Као додатна корист, ово такође смањује и укупну потрошену количину складишта.
Врсте придруживања
СКЛ дефинира пет различитих врста спајања: УНУТАР, ЛИЈЕВА ВАЊСКА, ДЕСНА ВАЊСКА, ПУНА ОУТЕР и ЦРОСС. Кључна реч ОУТЕР није обавезна у СКЛ изразу.
Мицрософт Аццесс дозвољава употребу ИННЕР (подразумевано), ЛЕВО ОУТЕР, ДЕСНО ОУТЕР и ЦРОСС. ПУНИ ОУТЕР се не подржава као такав, али коришћењем ЛЕФТ ОУТЕР, УНИОН АЛЛ и ДЕСНО ОУТЕР може се лажно представљати по цени више ЦПУ циклуса и И / О операција.
Излаз ЦРОСС спајања садржи сваки ред лијеве таблице упарен са сваким редом десне таблице. Једини пут када сам видео ЦРОСС придруживање кориштен је током тестирања оптерећења сервера база података.
Погледајмо како функционишу основне спојнице, а затим ћемо их изменити према нашим потребама.
Започнимо креирањем две табеле, ПродА и ПродБ, са следећим дизајнерским својствима.
АутоНумбер је аутоматски повећан дуги цели број додељен уносима јер су додани у табелу. Опција Тект није измењена, па ће прихватити текстуални низ до 255 знакова.
Сад, попуните их неким подацима.
Да бих показао разлике у начину функционисања 3 врсте придруживања, из ПродА сам избрисао уносе 1, 5 и 8.
Затим креирајте нови упит до Креирај> Дизајн упита. Изаберите обе табеле из дијалога Прикажи табелу и кликните на Додај, онда Близу.
Кликните на ПродуцтИД у табели ПродА, превуците га на ПродуцтИД у табели ПродБ и отпустите тастер миша да бисте створили однос између табела.
Кликните десним тастером миша на линију између табела које представљају однос између ставки и изаберите Придружи се својствима.
По дефаулту је одабран тип придруживања 1 (ИННЕР). Опција 2 је придруживање ЛЕВО ОУТЕР, а 3 је придруживање ДЕСНО ОУТЕР.
Прво ћемо погледати придруживање ИННЕР-а, па кликните У реду да бисте одбацили дијалог.
У дизајнеру упита одаберите поља која желимо да видимо са падајућих листа.
Када покренемо упит (црвени ускличник на врпци), он ће приказати поље ПродуцтНаме из обе табеле са вредностима из табеле ПродА у првом ступцу и ПродБ у другом.
Примјетите да резултати показују вриједности само тамо гдје је ПродуцтИД једнак у обје табеле. Иако у табели ПродБ постоји унос за ПродуцтИД = 1, он се не приказује у резултатима јер ПродуцтИД = 1 не постоји у табели ПродА. Исто важи за ПродуцтИД = 11. Постоји у табели ПродА, али није у табели ПродБ.
Употребом дугмета „Виев“ на врпци и пребацивањем на СКЛ Виев можете видети СКЛ упит који је генерисао дизајнер коришћен за добивање ових резултата.
СЕЛЕЦТ ПродА.ПродуцтНаме, ПродБ.ПродуцтНаме ИЗ ПРОДА УНУТРАШЊЕГ УЈЕДИЊЕЊА ПродБ ОН ПродА.ПродуцтИД = ПродБ.ПродуцтИД;
Вратите се на Дизајнерски приказ, промените врсту придруживања у 2 (лево ОУТЕР). Покрените упит да бисте видели резултате.
Као што видите, сваки унос у табели ПродА представљен је у резултатима, док се у резултатима приказују само они у ПродБ-у који имају подударање ПродуцтИД уноса у табели ПродБ.
Празан простор у ступцу ПродБ.ПродуцтНаме је посебна вриједност (НУЛЛ) јер у таблици ПродБ нема одговарајуће вриједности. Касније ће ово бити важно.
СЕЛЕЦТ ПродА.ПродуцтНаме, ПродБ.ПродуцтНаме ОД ПродА ЛЕВО ПРИДРУЖИТЕ се ПродБ ОН ПродА.ПродуцтИД = ПродБ.ПродуцтИД;
Покушајте исто с трећом врстом спајања (ДЕСНО ОУТЕР).
Резултати показују све из табеле ПродБ док приказује празне (познате као НУЛЛ) вредности где ПродА табела нема одговарајућу вредност. За сада, то нам највише приближава резултате жељене у питању нашег читатеља.
СЕЛЕЦТ ПродА.ПродуцтНаме, ПродБ.ПродуцтНаме ОД ПродА ДЕСНО ПРИДРУЖИТЕ се ПродБ ОН ПродА.ПродуцтИД = ПродБ.ПродуцтИД;
Коришћење функција у упиту
Резултати функције се такође могу вратити као део упита. Желимо да се нова колона под називом 'Резултати' појави у нашем сету резултата. Њена вредност ће бити садржај колоне ПродуцтНаме табеле ПродА ако ПродА има вредност (није НУЛЛ), у супротном треба узети из табеле ПродБ.
За генерисање овог резултата може се користити функција ИФ (ИИФ). Функција има три параметра. Први је услов који мора бити вредан Труе или Фалсе вредности. Други параметар је вриједност коју треба вратити ако је увјет Труе, а трећи параметар је вриједност која се враћа ако је увјет Фалсе.
Конструкт пуне функције за нашу ситуацију изгледа овако:
ИИФ (ПродА.ПродуцтИД је нулл, ПродБ.ПродуцтНаме, ПродА.ПродуцтНаме)
Примјетите да параметар увјета не провјерава једнакост. Нулл вредност у бази података нема вредност која се може упоредити са било којом другом вредношћу, укључујући другу Нулл. Другим речима, Нулл не одговара Нуллу. Икад. Да бисмо то прошли, умјесто тога провјеравамо вриједност помоћу кључне ријечи „Ис“.
Могли смо и да користимо „Ис Нот Нулл“ и променимо редослед параметара Труе и Фалсе да бисмо добили исти резултат.
Када ово ставите у Дизајнер упита, морате унети целу функцију у поље Фиелд:. Да бисте га креирали у колони „Резултати“, морате да користите псеудоним. Да бисте то учинили, предговорите функцију са 'Резултати:' као што се види на следећем снимку екрана.
Еквивалентни СКЛ код за то би био:
СЕЛЕЦТ ПродА.ПродуцтНаме, ПродБ.ПродуцтНаме, ИИФ (ПродА.ПродуцтИД је нула, ПродБ.ПродуцтНаме, ПродА.ПродуцтНаме) КАО Резултати ПРОДА ПРАВО ПРИДРУЖИТЕ се ПродБ ОН ПродА.ПродуцтИД = ПродБ.ПродуцтИД;
Сада, када покренемо овај упит, он ће произвести ове резултате.
Овде видимо за сваки унос где табела ПродА има вредност, та вредност се одражава у колони Резултати. Ако у Табели ПродА не постоји унос, унос из ПродБ-а ће се појавити у резултатима, а то је управо оно што је питао наш читалац.
За више ресурса за учење Мицрософт Аццесс-а, погледајте Јоел Лее-а Како научити Мицрософт Аццесс: 5 бесплатних Интернет ресурса Како научити Мицрософт Аццесс: 5 бесплатних Интернет ресурсаДа ли морате да управљате великом количином података? Требали бисте погледати Мицрософт Аццесс. Наши бесплатни ресурси за учење могу вам помоћи да започнете и научите вештине за сложеније пројекте. Опширније .
Бруце се играо с електроником од 70-их, рачунаром од раних 80-их, и тачно је одговарао на питања о технологији које није користио нити видио цијело вријеме. Такође се нервира покушајем свирања гитаре.