It yndividjen fan 'e WHERE-klausel en de betingsten fan kondysje
De Struktureare Query-taal (SQL) jout database-brûkers mei de mooglikheid om maatwurksifers te meitsjen om ynformaasje út te stjoeren fan databases. Yn in earder artikel ûntdekte wy ynformaasje út in database mei help fan SQL SELECT-fragen . Lit dizze útwurking útwreidzje en ûndersiikje hoe't jo befreone query dwaan kinne om data te berikken dy't spesifike betingsten passe.
Litte wy in foarbyld beskôgje op 'e gewoane brûkt Northwind-database, dy't faak mei database-produkten skriuwt as in tutorial.
Hjir is in útdiel fan 'e Product tabel databank:
ProductID | Produkt Namme | SupplierID | QuantityPerUnit | UnitPrice | UnitsInStock |
---|---|---|---|---|---|
1 | Chai | 1 | 10 boeken x 20 tasjes | 18.00 | 39 |
2 | Chang | 1 | 24 - 12 oz fleskes | 19.00 | 17 |
3 | Aniseed Sirup | 1 | 12 - 550 ml fleskes | 10.00 | 13 |
4 | Chef Anton's Cajun-sûzjen | 2 | 48 - 6 jellen | 22.00 | 53 |
5 | Chef Anton's Gumbo Mix | 2 | 36 boaten | 21.35 | 0 |
6 | Grutter 's Boysenberry Spread | 3 | 12 - 8 jagers | 25.00 | 120 |
7 | Uncle Bob's Organic Dried Pears | 3 | 12 - 1 lb pkgs. | 30.00 | 15 |
Simple Boundary Conditions
De earste beheinings dy't wy pleatse sille op ús query pleatse binne ienfâldige grinsferhâldings. Wy kinne dizze ynstelle yn 'e WHERE-klausel fan' e SELECT-query, mei help fan ienfâldige betingsten foar gebrûk fan standertbehearder, lykas <,>,> =, en <=.
Earst probearje wy in ienfâldige query dy't ús in list fan alle produkten yn 'e databank mei in UnitPrice fan mear as 20.00 oernimme kin:
Dit produkt in list fan fjouwer produkten, lykas hjirûnder sjen litten:
ProductName UnitPrice ------- -------- Chef Anton's Gumbo Mix 21.35 Chef Anton's Cajun-sûkerjen 22.00 Grandma's Boysenberry Spread 25.00 Onkel Bob's Organic Dried Pears 30.00Wy kinne ek de WHERE-klausel brûke mei stringwearden. Dit soarget as in karakterisaasje foar sifers, wêrby A A de wearde 1 en Z representearret fan de wearde 26. Foarbyld kinne wy alle produkten mei nammen begjinne mei U, V, W, X, Y of Z mei de folgjende fraach:
SELECT ProductName FROM produkten wêr't ProductName> = 'T'Hokker produkt it resultaat produkt:
ProductName ------- Uncle Bob's Organic Dried PearsEkspresearjen fan rigels mei gebrûk
De WHERE-klausel lit ús ek in oanbodstân op in wearde útfiere troch meardere betingsten te brûken. Bygelyks as wy ús boppesteande boppesteande ûndernimmingen hawwe en de resultaten op produkten mei prizen beheine kinne tusken 15.00 en 20.00 oere kinne wy de folgjende fraach brûke:
SELECT ProductName, UnitPrice FROM produkten WHERE UnitPrice> 15.00 en UnitPrice <20.00Dit produkt it resultaat hjirûnder:
ProductName UnitPrice ------- -------- Chai 18.00 Chang 19.00Eksportearjen fan rigels mei gearwurkje
SQL leveret ek in fluchtoetssynthet SYNK te feroarjen dat it tal betingsten ferminderet dy't wy nedich hawwe om te ynklikken en makket de query mear lêsber. Bygelyks, yn stee fan 'e gebrûk fan' e twa WHERE omskriuwing, kinne wy de deselde query ekspresje lykas:
SELECT ProductName, UnitPrice FROM produkten Wêr unitPrice tusken 15.00 en 20.00 oereAs mei ús oare betingstklasses wurket BETWEEN ek mei stringwearden. As wy in list fan alle lannen begjinne mei begjin mei V, W of X, kinne wy de query brûke:
SELECT ProductName FROM produkten Wêr ProductName telt "A" en "D"Hokker produkt it resultaat produkt:
ProductName ------- Aniseed Syrup Chai Chang Chef Anton's Gumbo Mix Chef Anton's Cajun-seehûnDe WHERE-klausel is in krêftich ûnderdiel fan 'e SQL-taal wêrtroch jo de resultaten beheine kinne op wearden dy't foarkomme yn spesifike farianten. It is hiel geweldich om te helpen útdrukke bedriuwslibik en moat in diel fan elke database-proxy-toolkit wêze.
It is faak nuttich om mienskiplike klauses yn te bewarjen yn in bewarre proseduere om tagonklik te meitsjen foar dy sûnder SQL-kennis.