Kompyuta, Aina ya faili
SQL tofauti: maelezo, mifano, mali
Mara nyingi wakati matumizi ya SQL ili kuokoa data kutoka meza, mtumiaji anapata data redundant ni kuwepo kwa safu kabisa kufanana zinazofanana. Ili kuepuka hali hii, kutumia SQL tofauti hoja katika hukumu Chagua. Makala hii itakuwa kujadili mifano ya matumizi ya hoja hii, pamoja na hali ambayo maombi lazima kutelekezwa na hoja.
Kabla ya kuendelea kufikiria mifano maalum, kujenga database required michache meza.
maandalizi meza
Fikiria kwamba tuna maduka database taarifa kuhusu Picha iliyotolewa katika meza mbili. Hii oboi meza (Ukuta) na nyanja id (kipekee kitambulisho), aina (aina ya mandhari -. Paper, vinyl, nk), rangi (rangi), struct (muundo) na bei (bei). Na meza Ostatki (mabaki) na nyanja id_oboi (akiwa na kitambulisho cha kipekee katika meza oboi) na kuhesabu (idadi ya mistari katika hisa).
Jaza jedwali la data. Katika jedwali kuongeza Picha rekodi 9:
oboi | ||||
id | aina | rangi | struct | bei |
1 | karatasi | multicolor | embossed | 56.9 |
2 | karatasi mbili-layered | beige | laini | 114.8 |
3 | vinyl | Orange | embossed | 504 |
4 | Ngozi | beige | embossed | 1,020.9 |
5 | karatasi mbili-layered | beige | laini | 150.6 |
6 | karatasi | multicolor | laini | 95.4 |
7 | vinyl | kahawia | laini | 372 |
8 | Ngozi | nyeupe | embossed | 980.1 |
9 | nguo | pink | laini | 1,166.5 |
meza na mabaki - na rekodi tisa:
Ostatki | |
id_oboi | kuhesabu |
1 | 8 |
2 | 12 |
3 | 24 |
4 | 9 |
5 | 16 |
6 | 7 |
7 | 24 |
8 | 32 |
9 | 11 |
Sisi kuendelea na maelezo ya utaratibu tofauti katika SQL.
Nafasi tofauti katika Select kifungu
Hoja tofauti kuwekwa mara baada ya Chagua keyword katika maswali. Yeye kutumika kwa safu wima zote maalum katika hukumu Chagua, kwa sababu ni kuwa mbali na matokeo ya mwisho ya swala ni masharti kabisa kufanana. Hivyo, mara moja inatosha kutaja wakati wa kuandika SQL «kuchagua tofauti» ombi. isipokuwa ni matumizi ya kazi tofauti ndani ya jumla ya mabao ambayo kuangalia baadaye.
Ikumbukwe kuwa wengi wa database na haitambui aina yako ya ombi:
CHAGUA Ostatki.Count tofauti, tofauti oboi. * FROM oboi INNER JOIN Ostatki ON Oboi.id = Ostatki.id_oboi |
Kuna hakuwa kuchukuliwa hoja mara kadhaa au mara moja maalum, lakini kabla ya pili, tatu au safu nyingine kuchaguliwa. Wewe kupata kosa akimaanisha kosa katika syntax.
Maombi tofauti maswali katika kiwango
Ni dhahiri kuwa kwa ujenzi wa meza sahihi muundo na kujaza yao ndani ya meza moja kutengwa hali wakati kuna masharti kabisa kufanana. Kwa hiyo, utekelezaji swala «Kuchagua tofauti *» na sampuli ya meza moja ni isiyowezekana.
Fikiria hali ya wakati tunahitaji kujua ni aina gani tuna mandhari, tu kwa ajili ya urahisi, kwa aina kwa aina:
SELECT Oboi.type FROM oboi ili na aina |
Na kupata matokeo:
aina |
karatasi |
karatasi |
karatasi mbili-layered |
karatasi mbili-layered |
vinyl |
vinyl |
nguo |
Ngozi |
Ngozi |
Kama inavyoonekana katika jedwali kuna duplicate mistari. Kama sisi kuongeza pendekezo Kuchagua tofauti:
CHAGUA Oboi.type tofauti FROM oboi ili na aina |
sisi kupata matokeo bila marudio:
aina |
karatasi |
karatasi mbili-layered |
vinyl |
nguo |
Ngozi |
Hivyo, kama vizuri kuingia data katika meza, kisha mara baada ya kupiga simu au ombi ya wanunuzi tunaweza kujibu kwamba Ukuta kioevu, mashine na akriliki Ukuta inapatikana katika kuhifadhi sio. Kutokana na kwamba aina mbalimbali ya maduka ni kawaida si mdogo kwa Picha mia moja, kuangalia orodha ya aina zisizo kipekee itakuwa kabisa nguvu kazi kubwa.
Maombi ya kazi tofauti kwa jumla ya mabao ndani ya
SQL hoja tofauti inaweza kutumika kwa kazi yoyote kwa jumla. Lakini kwa Min na Max matumizi yake haitakuwa na athari, lakini wakati wa kuhesabu kiasi au thamani ya wastani ni mara chache hali ambapo hakuna mtu ingekuwa kuzingatia marudio.
Tuseme tunataka kuangalia uwezo wa ghala yetu na kutuma ombi hili, computes idadi ya coils katika hisa:
SELECT jumla (Ostatki.count) FROM Ostatki |
Ombi kutoa jibu 143. Hata hivyo, sisi kubadili kwa:
SELECT jumla (tofauti Ostatki.count) FROM Ostatki |
sisi kupata jumla 119, kama Ukuta kwa idadi sehemu 3 na 7 ni katika hisa katika kiasi sawa. Hata hivyo, ni dhahiri kuwa jibu ni sahihi.
Mara nyingi kutumika katika SQL tofauti kazi Hesabu. Kwa hiyo, tunaweza kwa urahisi kujua aina ngapi ya kipekee ya mandhari, hatuna na:
SELECT kuhesabu (tofauti Oboi.type) FROM oboi |
Na kupata matokeo ya 5 - karatasi za kawaida na mbili-safu vinyl na kitambaa yasiyo ya kusokotwa. Hakika wote kuonekana matangazo kama vile: "Ni tuna zaidi ya 20 aina tofauti za mandhari," na ambayo ni maana kwamba duka hili ni hati si michache tu kadhaa na aina ya Picha aina ya kisasa.
Inashangaza kwamba katika hoja moja, unaweza kutaja kazi nyingi kama Hesabu sifa tofauti, na bila. Hiyo ni hali ya pekee ambapo tofauti katika Select'e zinaweza kuwa mara kadhaa.
Wakati kuachana na matumizi ya hoja
Na matumizi ya SQL hoja tofauti lazima kutelekezwa katika moja ya kesi mbili:
- You kufanya uteuzi wa meza na ni ujasiri katika thamani ya kipekee kila mmoja. Katika hali hii, matumizi ya hoja ni muafaka, kwa sababu ni mzigo wa ziada kwenye seva au mteja (kulingana na aina ya DBMS).
- Je, wewe ni hofu ya kupoteza data yako. Hebu kueleza.
bosi Tuseme anauliza wewe kwa orodha Picha uliyonayo, na dalili ya nguzo mbili tu - aina na rangi. Kati ya tabia, wewe kutoa hoja tofauti:
CHAGUA Oboi.type tofauti, Oboi.color FROM oboi ORDER BY Oboi.type |
Na - kupoteza baadhi ya data:
aina | rangi |
karatasi | multicolor |
karatasi mbili-layered | beige |
vinyl | kahawia |
vinyl | Orange |
nguo | pink |
Ngozi | beige |
Ngozi | nyeupe |
Ni inaweza kutoa hisia kwamba karatasi Picha (kawaida na dual-safu) tuna akili moja tu, kwa kweli, hata katika meza yetu kidogo cha makala mbili (matokeo bila tofauti):
aina | rangi |
karatasi | multicolor |
karatasi | multicolor |
karatasi mbili-layered | beige |
karatasi mbili-layered | beige |
vinyl | kahawia |
vinyl | Orange |
nguo | pink |
Ngozi | nyeupe |
Ngozi | beige |
Kwa hiyo, kama kwa maandishi ombi lolote kwa hoja tofauti haja ya kuwa makini na uwezo wa kuamua juu ya matumizi yake, kulingana na kazi.
mbadala tofauti
Kinyume na hoja tofauti - hoja zote. Katika maombi yake duplicate safu zimehifadhiwa. Lakini kama database chaguo-msingi na anaona kuwa ni muhimu kuonyesha thamani zote, hoja zote - hata hivyo ni kufuzu ya hoja halisi kazi.
Similar articles
Trending Now