Paano Sumulat ng Microsoft Access SQL Queries Mula sa Scratch

Paano Sumulat ng Microsoft Access SQL Queries Mula sa Scratch

Ang Microsoft Access ay masasabing ang pinakamakapangyarihang tool sa buong suite ng Microsoft Office, ngunit mistiko (at kung minsan ay kinakatakutan) ang mga gumagamit ng kapangyarihan sa Opisina. Sa isang mas matarik na kurba sa pag-aaral kaysa sa Word o Excel, paano dapat ibalot ng sinuman ang kanilang ulo sa paggamit ng tool na ito? Sa linggong ito, titingnan ni Bruce Epper ang ilan sa mga isyu na pinasigla ng katanungang ito mula sa isa sa aming mga mambabasa.





Ang isang Mambabasa ay nagtanong:

Nagkakaproblema ako sa pagsusulat ng isang query sa Microsoft Access. Mayroon akong isang database na may dalawang talahanayan ng produkto na naglalaman ng isang karaniwang haligi na may isang numerong code ng produkto at isang nauugnay na pangalan ng produkto. Nais kong malaman kung aling mga produkto ang matatagpuan sa Talahanayan A. sa Talaan B. Gusto kong magdagdag ng isang haligi na pinangalanang Mga Resulta na naglalaman ng pangalan ng produkto mula sa Talahanayan A kung mayroon ito, at ang pangalan ng produkto mula sa Talaan B kapag wala ito sa Talahanayan A. Mayroon ka bang payo?





Sagot ni Bruce:

Ang Microsoft Access ay isang Database Management System (DBMS) na idinisenyo para magamit sa parehong mga makina ng Windows at Mac. Gumagamit ito ng Jet engine engine ng Microsoft para sa pagproseso ng data at imbakan. Nagbibigay din ito ng isang graphic na interface para sa mga gumagamit na halos tinatanggal ang pangangailangan na maunawaan ang Structured Query Language (SQL).





Ang SQL ay ang wikang pang-utos na ginamit upang magdagdag, magtanggal, mag-update, at ibalik ang impormasyon na nakaimbak sa database pati na rin baguhin ang mga pangunahing bahagi ng database tulad ng pagdaragdag, pagtanggal, o pagbabago ng mga talahanayan o indeks.

Panimulang Punto

Kung wala ka pang pamilyar sa Access o ibang RDBMS, iminumungkahi kong magsimula ka sa mga mapagkukunang ito bago magpatuloy:



  • Kaya Ano ang isang Database? kung saan ginagamit ni Ryan Dube ang Excel upang maipakita ang mga pangunahing kaalaman sa mga database ng mga pamanggit.
  • Isang Mabilis na Gabay Upang Magsimula Sa Microsoft Access 2007 na kung saan ay isang mataas na antas ng pangkalahatang-ideya ng Access at ang mga bahagi na binubuo ng isang Access database.
  • Isang Mabilis na Tutorial Sa Mga Talahanayan sa Microsoft Access 2007 ay tumitingin sa paglikha ng iyong unang database at mga talahanayan upang maiimbak ang iyong nakabalangkas na data.
  • Isang Mabilis na Tutorial Sa Mga Query Sa Microsoft Access 2007 tinitingnan ang mga paraan upang ibalik ang mga tukoy na bahagi ng data na nakaimbak sa mga talahanayan ng database.

Ang pagkakaroon ng pangunahing kaalaman sa mga konseptong ibinigay sa mga artikulong ito ay magpapadali sa digest ng sumusunod.

Mga Relasyong Database at Normalisasyon

Isipin na nagpapatakbo ka ng isang kumpanya na nagbebenta ng 50 iba't ibang mga uri ng mga widget sa buong mundo. Mayroon kang isang base ng kliyente na 1,250 at sa isang average na buwan ay nagbebenta ng 10,000 mga widget sa mga kliyente na ito. Kasalukuyan kang gumagamit ng isang solong spreadsheet upang subaybayan ang lahat ng mga benta na ito - mabisang isang solong database ng database. At bawat taon ay nagdaragdag ng libu-libong mga hilera sa iyong spreadsheet.





Ang mga imaheng nasa itaas ay bahagi ng spreadsheet ng pagsubaybay sa order na iyong ginagamit. Ngayon sabihin pareho ng mga kliyente na ito na bumili ng mga widget mula sa iyo ng maraming beses sa isang taon upang mayroon kang higit na mga hilera para sa pareho sa kanila.





Kung ikakasal si Joan Smith kay Ted Baines at kunin ang kanyang apelyido, ang bawat solong hilera na naglalaman ng kanyang pangalan ay kailangang palitan. Ang problema ay pinagsama kung sakaling magkaroon ka ng dalawang magkakaibang kliyente na may pangalang 'Joan Smith'. Naging mas mahirap upang mapanatili ang iyong data ng mga benta na pare-pareho dahil sa isang karaniwang kaganapan.

Sa pamamagitan ng paggamit ng isang database at gawing normal ang data, maaari naming paghiwalayin ang mga item sa maraming mga talahanayan tulad ng imbentaryo, mga kliyente, at mga order.

Sa pagtingin lamang sa bahagi ng kliyente ng aming halimbawa, aalisin namin ang mga haligi para sa Pangalan ng Client at Client Address at ilagay ito sa isang bagong talahanayan. Sa imahe sa itaas, nasira ko rin ang mga bagay na mas mahusay para sa mas maraming butil na pag-access sa data. Naglalaman din ang bagong talahanayan ng isang haligi para sa isang Pangunahing Key (ClientID) - isang numero na gagamitin upang ma-access ang bawat hilera sa talahanayan na ito.

Sa orihinal na talahanayan kung saan namin inalis ang data na ito, magdaragdag kami ng isang haligi para sa isang Foreign Key (ClientID) na kung saan ay nag-uugnay sa tamang hilera na naglalaman ng impormasyon para sa partikular na client.

Ngayon, kapag binago ni Joan Smith ang kanyang pangalan sa Joan Baines, ang pagbabago ay kailangang gawin minsan sa talahanayan ng Client. Ang bawat iba pang sanggunian mula sa mga sumali sa talahanayan ay kukuha ng tamang pangalan ng kliyente at isang ulat na tinitingnan kung ano ang binili ni Joan sa huling 5 taon ay makakakuha ng lahat ng mga order sa ilalim ng kanyang dalaga at may-asawa na mga pangalan nang hindi kinakailangang baguhin kung paano nabuo ang ulat. .

Bilang isang karagdagang benepisyo, binabawasan din nito ang pangkalahatang halaga ng natupok na imbakan.

Sumali sa Mga Uri

Tinutukoy ng SQL ang limang magkakaibang uri ng pagsali: INNER, LEFT OUTER, RIGHT OUTER, FULL OUTER, at CROSS. Ang OUTER keyword ay opsyonal sa pahayag ng SQL.

Pinapayagan ng Microsoft Access ang paggamit ng INNER (default), LEFT OUTER, RIGHT OUTER, at CROSS. Ang FULL OUTER ay hindi suportado ng ganoong, ngunit sa pamamagitan ng paggamit ng LEFT OUTER, UNION ALL, at RIGHT OUTER, maaari itong gawing halaga sa gastos ng mas maraming mga cycle ng CPU at mga pagpapatakbo ng I / O.

Ang output ng isang pagsali sa CROSS ay naglalaman ng bawat hilera ng kaliwang talahanayan na ipinares sa bawat hilera ng kanang mesa. Ang nag-iisang oras lamang na nakita ko ang ginamit na CROSS na sumali ay habang sinusubukan ang pag-load ng mga server ng database.

Tingnan natin kung paano gumagana ang pangunahing sumali, pagkatapos ay babaguhin natin ang mga ito upang umangkop sa aming mga pangangailangan.

Magsimula tayo sa pamamagitan ng paglikha ng dalawang mga talahanayan, ang ProdA at ProdB, na may mga sumusunod na katangian ng disenyo.

Ang AutoNumber ay isang awtomatikong pagdaragdag ng mahabang integer na nakatalaga sa mga entry habang idinagdag sa talahanayan. Ang pagpipilian sa Teksto ay hindi binago, kaya tatanggap ito ng isang text string na hanggang 255 character ang haba.

Ngayon, punan ang mga ito ng ilang data.

Upang maipakita ang mga pagkakaiba sa kung paano gumagana ang 3 uri ng pagsali, tinanggal ko ang mga entry na 1, 5, at 8 mula sa ProdA.

Susunod, lumikha ng isang bagong query sa pamamagitan ng pagpunta sa Lumikha> Disenyo ng Query . Piliin ang parehong mga talahanayan mula sa dialog ng Ipakita ang Talahanayan at i-click ang Idagdag , kung gayon Isara .

Mag-click sa ProductID sa talahanayan na ProdA, i-drag ito sa ProductID sa talahanayan na ProdB at bitawan ang pindutan ng mouse upang likhain ang ugnayan sa pagitan ng mga talahanayan.

Mag-right click sa linya sa pagitan ng mga talahanayan na kumakatawan sa ugnayan sa pagitan ng mga item at piliin ang Sumali sa Mga Katangian .

Bilang default, napili ang sumali sa uri 1 (INNER). Ang Opsyon 2 ay isang LEFT OUTER na sumali at ang 3 ay isang RIGHT OUTER na sumali.

Titingnan muna namin ang pagsali sa INNER, kaya i-click ang OK upang maalis ang dialog.

Sa taga-disenyo ng query, piliin ang mga patlang na nais naming makita mula sa mga drop-down na listahan.

Kapag pinatakbo namin ang query (ang pulang tandang tandang sa laso), ipapakita nito ang patlang ng ProductName mula sa parehong mga talahanayan na may halaga mula sa talahanayan na ProdA sa unang haligi at ang ProdB sa pangalawa.

Pansinin ang mga resulta ay nagpapakita lamang ng mga halaga kung saan ang ProductID ay pantay-pantay sa parehong mga talahanayan. Kahit na may isang entry para sa ProductID = 1 sa talahanayan na ProdB, hindi ito lalabas sa mga resulta dahil ang ProductID = 1 ay wala sa talahanayan na ProdA. Nalalapat ang pareho sa ProductID = 11. Mayroon ito sa talahanayan na ProdA ngunit hindi sa talahanayan na ProdB.

Sa pamamagitan ng paggamit ng pindutang Tingnan sa laso at paglipat sa SQL View, makikita mo ang query sa SQL na nabuo ng taga-disenyo na ginamit upang makuha ang mga resulta.

SELECT ProdA.ProductName, ProdB.ProductName FROM ProdA INNER JOIN ProdB ON ProdA.ProductID = ProdB.ProductID;

Bumalik sa View ng Disenyo, palitan ang uri ng pagsali sa 2 (KALIWASANG LABAS). Patakbuhin ang query upang makita ang mga resulta.

Tulad ng nakikita mo, ang bawat entry sa talahanayan na ProdA ay kinakatawan sa mga resulta habang ang mga nasa ProdB lamang na mayroong isang katugmang entry ng ProductID sa talahanayan na ProdB ang lalabas sa mga resulta.

Ang blangko na puwang sa haligi ng ProdB.ProductName ay isang espesyal na halaga (NULL) dahil walang isang katugmang halaga sa talahanayan na ProdB. Patunayan nitong mahalaga sa paglaon.

SELECT ProdA.ProductName, ProdB.ProductName FROM ProdA LEFT JOIN ProdB ON ProdA.ProductID = ProdB.ProductID;

Subukan ang parehong bagay sa pangatlong uri ng pagsali (RIGHT OUTER).

Ipinapakita ng mga resulta ang lahat mula sa talahanayan na ProdB habang ipinapakita nito ang mga blangko (kilala bilang NULL) na mga halaga kung saan ang talahanayan ng ProdA ay walang pagtutugma na halaga. Sa ngayon, nagdadala ito sa amin ng pinakamalapit sa mga resulta na ninanais sa tanong ng aming mambabasa.

SELECT ProdA.ProductName, ProdB.ProductName FROM ProdA RIGHT JOIN ProdB ON ProdA.ProductID = ProdB.ProductID;

Paggamit ng Mga Pag-andar sa isang Query

Ang mga resulta ng isang pagpapaandar ay maaari ring ibalik bilang bahagi ng isang query. Nais naming lumitaw ang isang bagong haligi na pinangalanang 'Mga Resulta' sa aming hanay ng resulta. Ang halaga nito ay magiging nilalaman ng haligi ng ProductName ng talahanayan na ProdA kung ang ProdA ay may halaga (hindi ito NUL), kung hindi man dapat itong kunin mula sa talahanayan na ProdB.

Ang pag-andar ng Agarang IF (IIF) ay maaaring magamit upang makabuo ng resulta na ito. Ang pagpapaandar ay tumatagal ng tatlong mga parameter. Ang una ay isang kundisyon na dapat suriin sa isang Tama o Maling halaga. Ang pangalawang parameter ay ang halagang ibabalik kung ang kondisyon ay Tama, at ang pangatlong parameter ay ang ibabalik na halaga kung Mali ang kundisyon.

Ang buong konstruksyon ng pagpapaandar para sa aming sitwasyon ay ganito:

IIF(ProdA.ProductID Is Null, ProdB.ProductName,ProdA.ProductName)

Pansinin na ang parameter ng kundisyon ay hindi suriin para sa pagkakapantay-pantay. Ang isang Null na halaga sa isang database ay walang halaga na maihahambing sa anumang iba pang halaga, kabilang ang isa pang Null. Sa madaling salita, ang Null ay hindi katumbas ni Null. Kailanman Upang malampasan ito, susuriin namin sa halip ang halaga gamit ang keyword na 'Ay'.

Maaari din naming magamit ang 'Ay Hindi Null' at binago ang pagkakasunud-sunod ng Totoo at Maling mga parameter upang makuha ang parehong resulta.

Kapag inilalagay ito sa Query Designer, dapat mong i-type ang buong pagpapaandar sa Patlang: entry. Upang makuha ito upang likhain ang haligi na 'Mga Resulta', kailangan mong gumamit ng isang alias. Upang magawa ito, paunang salita ang pagpapaandar sa 'Mga Resulta:' tulad ng nakikita sa sumusunod na screenshot.

Ang katumbas na SQL code upang magawa ito ay:

SELECT ProdA.ProductName, ProdB.ProductName, IIF(ProdA.ProductID Is Null,ProdB.ProductName,ProdA.ProductName) AS Results FROM ProdA RIGHT JOIN ProdB ON ProdA.ProductID = ProdB.ProductID;

Ngayon, kapag pinatakbo namin ang query na ito, gagawa ito ng mga resulta.

kung paano gawing transparent ang mga background ng imahe

Narito nakikita natin para sa bawat entry kung saan ang talahanayan ng ProdA ay may halaga, ang halagang iyon ay makikita sa haligi ng Mga Resulta. Kung walang isang entry sa talahanayan ng ProdA, ang entry mula sa ProdB ay lilitaw sa Mga Resulta na eksaktong tinanong ng aming mambabasa.

Para sa higit pang mga mapagkukunan para sa pag-aaral ng Microsoft Access, tingnan ang Paano Malalaman ng Microsoft Access ang 5 Joel Lee: 5 Libreng Mga Online na Mapagkukunan.

Magbahagi Magbahagi Mag-tweet Email Ito ba ay Worth Upgrading sa Windows 11?

Ang Windows ay muling idisenyo. Ngunit sapat na ba iyon upang kumbinsihin kang lumipat mula sa Windows 10 patungong Windows 11?

Basahin Susunod
Mga Kaugnay na Paksa
  • Pagiging produktibo
  • Tanungin Ang Mga Eksperto
Tungkol sa May-akda Bruce Epper(13 Mga Artikulo Na-publish)

Si Bruce ay naglalaro ng electronics mula pa noong dekada 70, mga computer mula pa noong unang bahagi ng 80, at tumpak na pagsasagot sa mga katanungan tungkol sa teknolohiya na hindi niya ginamit o nakita sa buong oras. Naiinis din siya sa sarili sa pagtangkang tumugtog ng gitara.

Higit pa Mula kay Bruce Epper

Mag-subscribe sa aming newsletter

Sumali sa aming newsletter para sa mga tip sa tech, pagsusuri, libreng ebook, at eksklusibong deal!

Mag-click dito upang mag-subscribe