Ordenagailuak, Fitxategi motak
SQL bereizgarria: deskribapena, adibideak, propietateak
Sarritan, mahaien informazioa berreskuratzeko SQL erabiltzen denean, erabiltzaileak datu erredundanteak jasotzen ditu, errenkada bikoiztuak berdinak direnez. Egoera hori baztertzeko, erabili SQL argumentu desberdina Hautatu klausulan. Artikulu honetan argumentu hau erabiltzerakoan adibide batzuk aztertuko ditugu, baita argudioa uzteko hobeak ere.
Adibide zehatzak kontuan hartzen hasi baino lehen, beharrezko datu-baseko pare bat egingo ditugu datu-basean.
Taulak prestatzea
Imajinatu datu-basean horma-paperari buruzko informazioa gordetzen dugunean, bi tauletan aurkezten dugula. Hau da Oboi taula (atzeko planoaren) eremuen IDa (identifikatzaile bakarra), mota (wallpaper mota - papera, biniloa, etab.), Kolorea, egitura eta prezioa. Ostatki taulak (bazterrak) id_oboi eremuak (Oboi mahaian identifikatzaile bakarra den erreferentzia) eta zenbaketa (biltegian erroiluak).
Bete datuen taulak. Horma-papera duten mahai gainean 9 sarrera gehituko ditugu:
Oboi | ||||
id | mota | color | egitura | prezioa |
1 | paper | multicolor | errektifikatu | 56,9 |
2 | Bi geruza paper | beige | leuna | 114,8 |
3 | binilo | Orange | errektifikatu | 504 |
4 | Ez ehundutako ehunak | beige | errektifikatu | 1020,9 |
5 | Bi geruza paper | beige | leuna | 150.6 |
6 | paper | multicolor | leuna | 95,4 |
7 | binilo | marroiak | leuna | 372 |
8 | Ez ehundutako ehunak | Zuri- | errektifikatu | 980,1 |
9 | oihal | arrosa | leuna | 1166,5 |
Mahaian gainerakoak bederatzi erregistro daude:
Ostatki | |
id_oboi | zenbatu |
1 | 8 |
2 | 12 |
3 | 24 |
4 | 9 |
5 | 16 |
6 | 7 |
7 | 24 |
8 | 32 |
9 | 11 |
Dezagun SQL-en nola erabiltzen den deskribatuz.
Leku desberdinetan Hautatu klausulan
Argumentu ezberdina berehala jarri behar da Hautazko gako-hitzak kontsultak egin ostean. Aukerazko klausulan zehaztutako zutabe guztietan aplikatzen da berehala, kontsulta emaitzatik errenkaden berdin-berdinak baztertzen baititu. Horrela, SQL kontsulta bat idaztea "desberdina" zehaztea nahikoa da. Salbuespen bakarra funtsezko agregatuen barruan ezberdinen erabilera da, geroago apur bat hartuko baita.
Gogoratu behar da DBMS gehienek ez dutela zure eskaera ezagutzen:
Aukeratu Ostatki.Count desberdina, Oboi desberdina. * Oboi-tik INNER JOIN Ostatki ON Oboi.id = Ostatki.id_oboi |
Hemen, argumentua hainbat aldiz zehaztu da edo behin zehazten da, baina bigarrena, hirugarrena edo beste zutabe hautagarri bat baino lehen. Errore bat jasoko duzu sintaxiarekin ezarritako akatsarekin.
Kontsulta estandarrekin desberdina erabiltzea
Bistakoa da taulen egituraren eta haien betegarriaren eraikuntza egokiarekin, mahai berean kokatzen diren egoerak bazter utzita kate berdinak aurkitzen direnean. Hori dela eta, "Aukeratu bereizitakoa" kontsultaren exekuzioa mahai baten hautapenarekin ia praktikoa da.
Imajinatu behar duguna zein motatako horma-papera ezagutu behar dugun, erosotasuna besterik ez dezazun, ordenatu motaren arabera:
SELECT Oboi.type Oboi ordenaren arabera motaren arabera |
Eta emaitza lortuko dugu:
mota |
paper |
paper |
Bi geruza paper |
Bi geruza paper |
binilo |
binilo |
oihal |
Ez ehundutako ehunak |
Ez ehundutako ehunak |
Ikusten duzun bezala, mahaiaren errenkada bikoitzak daude. Aukeratutako klausulara gehitzen bagaitu:
SELECT Oboi.type ezberdina Oboi ordenaren arabera motaren arabera |
Ondoren, emaitza lortzen dugu errepikatu gabe:
mota |
paper |
Bi geruza paper |
binilo |
oihal |
Ez ehundutako ehunak |
Horrela, datuek mahaietan behar bezala sartu badira, orduan eroslearen deia edo eskaera egin ondoren, ezingo ditugu horma-paperezko likidoak, beirazko espaloi eta horma-papera akrilikoa izan. Dendetan sorta normalean ez da ehundaka paper mugatzen, nahiko deseroso izango litzateke mota ez-bakarraen zerrenda bilatzeko.
Funtzio agregatuen barruan desberdinak erabiliz
SQL desberdina edozein agregatu funtzio erabil daiteke. Baina Min eta Max-ek ez du inolako baliorik izango, eta batura edo batez besteko balioa kalkulatzeko, oso gutxitan posible da errepikapenen kontua ez izatea beharrezkoa den egoera bat imajinatzea.
Demagun zenbat biltegia dagoen jakiteko, eta horretarako biltegian erroilu kopurua kalkulatzen duen eskaera bidaltzen dugu.
SELECT sum (Ostatki.count) FROM Ostatki |
Kontsultak erantzuna emango dio 143. Aldatu garenean:
SELECT sum (ostatki.count bereizgarria) FROM Ostatki |
Orduan 119 besterik ez ditugu lortzen, 3 eta 7 artikuluetan egindako horma-paperak kantitate berean daude. Hala ere, begien bistakoa da erantzuna okerra dela.
Gehienetan SQL erabiltzen da Count funtzioarekin. Horrela, zailtasunik gabe, horma-papera mota desberdinen artean aurkituko ditugu:
SELECT count (Oboi.type ezberdina) Oboi-tik |
Eta lortu emaitza 5 - paper arruntak eta bi geruza, binilo, ehuna eta ez ehundutako. Ziur asko denek iragarkia ikusi zuten bezala: "20 baino gehiago baino ez dugu beste horma-paper motak!", Eta horrek esan nahi du denda honetan ez direla dozena bat errodako pare bat, baizik eta askotariko mota modernoen horma-papera.
Interesgarria da, eskaera bakarrean, hainbat funtzio zehaztu ditzakezu, atributu ezberdinekin edo gabe. Hau da, hau da, aukera desberdinetan hainbat aldiz egon daitekeen egoera bakarra.
Noiz argumentu baten erabilera arbuiatu behar dut
SQL argumentu desberdinen erabilera bi modu baztertu behar da:
- Taulen artean hautatzen duzu eta balioak bereiztea gomendatzen da. Kasu honetan, argumentua erabiltzea ez da beharrezkoa, zerbitzari edo bezeroaren karga gehigarria delako (DBMS motaren arabera).
- Derrigorrezko datuak galtzen beldur zara. Esaguzu azaldu.
Demagun buruari zuk nahi duzun horma-paperen zerrenda bistaratzeko eskatzen duela, bi zutabe soilik: mota eta kolorea. Ohituraz, argumentua bereizten duzu:
SELECT Oboi.type ezberdina, Oboi.color Oboi-tik ORDENA Oboi.type arabera |
Eta - datuak galduko dituzu:
mota | color |
paper | multicolor |
Bi geruza paper | beige |
binilo | marroiak |
binilo | Orange |
oihal | arrosa |
Ez ehundutako ehunak | beige |
Ez ehundutako ehunak | Zuri- |
Paperezko papera (ohiko eta bi geruza) mota bat baino ez dugu agertzen, nahiz eta gure mahai txiki batzuetan bi artikulu ere badira (emaitza ez bereizita):
mota | color |
paper | multicolor |
paper | multicolor |
Bi geruza paper | beige |
Bi geruza paper | beige |
binilo | marroiak |
binilo | Orange |
oihal | arrosa |
Ez ehundutako ehunak | Zuri- |
Ez ehundutako ehunak | beige |
Hori dela eta, edozein kontsultak egiten duen moduan, argumentu ezberdin batekin kontuz ibili eta behar bezala konpondu beharra dago aplikazioarekin, zereginaren arabera.
Alternatiba desberdina
Argumentu ezberdinaren kontrakoa Argumentu guztia da. Erabili duzunean, lerro bikoitzak gordetzen dira. Baina lehenespenez, DBMSk uste du balio guztiak inprimatzea beharrezkoa dela, Argumentu guztia argumentu funtzional erreal bat baino zehaztapen bat baino gehiago dela.
Similar articles
Trending Now