កុំព្យូទ័រ, ប្រភេទឯកសារ
SQL មួយខុសគ្នា: ការរៀបរាប់, ឧទាហរណ៍, លក្ខណៈសម្បត្តិ
ជាញឹកញាប់នៅពេលដែលអ្នកប្រើ SQL មួយដើម្បីទាញយកទិន្នន័យពីតារាងនេះអ្នកប្រើដែលបានទទួលទិន្នន័យទូលំទូលាយនេះគឺអត្ថិភាពនៃជួរដេកស្ទួនដូចគ្នាពិតជាបាន។ ដើម្បីជៀសវាងស្ថានភាពនេះប្រើ SQL មួយអាគុយម៉ង់ខុសគ្នាក្នុងប្រយោគជ្រើស។ អត្ថបទនេះនឹងពិភាក្សាអំពីគំរូនៃការប្រើប្រាស់នៃអាគុយម៉ង់នេះព្រមទាំងស្ថានភាពដែលកម្មវិធីនេះគួរតែត្រូវបានបោះបង់ចោលដោយអាគុយម៉ង់។
មុនពេលយើងបន្តទៅពិចារណាឧទាហរណ៍ជាក់លាក់បង្កើតមូលដ្ឋានទិន្នន័យដែលបានទាមទារប្តីប្រពន្ធរបស់តារាង។
ការរៀបចំតារាង
សូមស្រមៃគិតថាយើងមានហាងមូលដ្ឋានទិន្នន័យអំពីពផ្ទាំងរូបភាពដែលបានបង្ហាញនៅក្នុងតារាងទាំងពីរ។ oboi នេះតារាង (ផ្ទាំង) ដែលមានវាលលេខសម្គាល់ (គ្រឿងសម្គាល់តែមួយគត់) របស់ប្រភេទ (ប្រភេទនៃផ្ទាំងរូបភាព។ - ក្រដាស, ប្លាស្ទិច, ល), សម្បុរ (color) ដែលជា struct (រចនាសម្ព័ន្ធ) និងតម្លៃ (តម្លៃ) ។ និងតារាង Ostatki (សំណល់) ជាមួយនឹងវាល id_oboi (សេចក្ដីយោងទៅនឹងគ្រឿងសម្គាល់តែមួយគត់ដែលមាននៅក្នុងតារាង Oboi មួយ) និងចំនួន (ចំនួននៃការវិលនៅក្នុងស្តុក) ។
បំពេញតារាងទិន្នន័យ។ នៅក្នុងតារាងបន្ថែមផ្ទាំងរូបភាពកំណត់ត្រា 9:
Oboi | ||||
លេខសម្គាល់ | ប្រភេទ | ប៍ន | struct | តម្លៃ |
1 | ក្រដាស | multicolor | ពុម្ព | ចំនួន 56,9 |
2 | ក្រដាសស្រទាប់ទ្វេរដង | ត្នោត | រលូន | 114,8 |
3 | ប្លាស្ទិច | ទឹកក្រូច | ពុម្ព | 504 |
4 | fleece | ត្នោត | ពុម្ព | 1020,9 |
5 | ក្រដាសស្រទាប់ទ្វេរដង | ត្នោត | រលូន | 150,6 |
6 | ក្រដាស | multicolor | រលូន | 95,4 |
7 | ប្លាស្ទិច | ត្នោត | រលូន | 372 |
8 | fleece | ស | ពុម្ព | 980,1 |
9 | ការណាត់ | ផ្កាឈូក | រលូន | 1166,5 |
តារាងជាមួយនឹងការនៅសល់ការ - និងកំណត់ត្រាប្រាំបួន:
Ostatki | |
id_oboi | រាប់ |
1 | 8 |
2 | 12 |
3 | 24 |
4 | 9 |
5 | 16 |
6 | 7 |
7 | 24 |
8 | 32 |
9 | 11 |
យើងបន្តទៅការរៀបរាប់នៃលំដាប់ខុសគ្នានេះនៅក្នុង SQL នេះ។
ដាក់គ្នានៅក្នុងការជ្រើសឃ្លា
អាគុយម៉ង់ខុសគ្នាគួរតែត្រូវបានដាក់ភ្លាមបន្ទាប់ពីជ្រើសពាក្យគន្លឹះនៅក្នុងសំណួរ។ លោកបានអនុវត្តទៅជួរឈរទាំងអស់បញ្ជាក់នៅក្នុងការកាត់ទោសនេះជ្រើសនោះទេព្រោះវានឹងត្រូវបានដកចេញពីលទ្ធផលសំណួរចុងក្រោយគឺខ្សែអក្សរដែលដូចគ្នាពិត។ ដូច្នេះនៅពេលដែលគឺគ្រប់គ្រាន់ដើម្បីបញ្ជាក់នៅពេលសរសេរ SQL មួយ«ជ្រើសរើសខុសគ្នា»ការស្នើរសុំ។ ករណីលើកលែងគឺការប្រើប្រាស់នៃមុខងារសរុបនៅក្នុងគ្នាដែលមើលទៅនៅពេលបន្តិចទៀតនេះ។
វាគួរតែត្រូវបានចងចាំថាភាគច្រើននៃមូលដ្ឋានទិន្នន័យនិងមិនទទួលស្គាល់ប្រភេទរបស់អ្នកនៃការស្នើសុំ:
ជ្រើស Ostatki.Count ខុសគ្នា, Oboi ខុសគ្នា។ * ពី oboi ខាងក្នុងចូលរួម Ostatki លើ Oboi.id = Ostatki.id_oboi |
មានអាគុយម៉ង់មិនត្រូវបានគេចាត់ទុកថាជាច្រើនដងឬនៅពេលដែលបានបញ្ជាក់នោះទេប៉ុន្តែមុនពេលដែលទីពីរទីបីឬជួរឈរដែលបានជ្រើសមួយផ្សេងទៀត។ អ្នកនឹងទទួលបានកំហុសដែលសំដៅទៅលើកំហុសនៅក្នុងវាក្យសម្ព័ន្ធមួយ។
សំណួរខុសគ្នាកម្មវិធីនេះនៅក្នុងស្ដង់ដារ
វាច្បាស់ណាស់ថាជាមួយនឹងតារាងរចនាសម្ព័ន្ធអគារត្រឹមត្រូវនិងបំពេញឱ្យពួកគេក្នុងតារាងតែមួយបានដកចេញស្ថានភាពនេះនៅពេលដែលមានខ្សែអក្សរដែលដូចគ្នាពិត។ ដូច្នេះការប្រតិបត្តិសំណួរ«ជ្រើស * ខុសគ្នា»ដែលមានគំរូនៃតារាងមួយគឺ impractical ។
សូមពិចារណាអំពីស្ថានភាពមួយនៅពេលដែលយើងត្រូវដឹងថាអ្វីដែលជាប្រភេទយើងមានផ្ទាំងរូបភាព, គ្រាន់តែសម្រាប់ផ្តល់ភាពងាយស្រួលដើម្បីតម្រៀបតាមប្រភេទ:
ជ្រើស Oboi.type ពីគោលបំណង Oboi តាមប្រភេទ |
និងទទួលបានលទ្ធផលនេះ:
ប្រភេទ |
ក្រដាស |
ក្រដាស |
ក្រដាសស្រទាប់ទ្វេរដង |
ក្រដាសស្រទាប់ទ្វេរដង |
ប្លាស្ទិច |
ប្លាស្ទិច |
ការណាត់ |
fleece |
fleece |
ដូចដែលគេឃើញនៅក្នុងតារាងមានជួរដេកស្ទួនមាន។ ប្រសិនបើយើងបន្ថែមសំណើនេះជ្រើសខុសគ្នា:
ជ្រើស Oboi.type ខុសគ្នា ពីគោលបំណង Oboi តាមប្រភេទ |
យើងទទួលបានលទ្ធផលដោយមិនចាំបាច់ធ្វើឡើងវិញនេះ:
ប្រភេទ |
ក្រដាស |
ក្រដាសស្រទាប់ទ្វេរដង |
ប្លាស្ទិច |
ការណាត់ |
fleece |
ដូច្នេះប្រសិនបើអ្នកបញ្ចូលទិន្នន័យត្រឹមត្រូវនៅក្នុងតារាងបន្ទាប់មកភ្លាមបន្ទាប់ពីការហៅទូរស័ព្ទឬសំណើររបស់អ្នកទិញដែលយើងអាចឆ្លើយថាផ្ទាំងរូបភាពរាវសំឡីកែវរូបភាព acrylic មាននៅក្នុងហាងនេះគឺមិនមាន។ បានផ្ដល់ឱ្យថាជួរនៃហាងនោះត្រូវបានជាធម្មតាមិនត្រូវបានកំណត់ទៅមួយរយផ្ទាំងរូបភាព, មើលបញ្ជីនៃប្រភេទដែលមិនមែនជាតែមួយគត់ដែលនឹងត្រូវបានពិតជាពឹងផ្អែកលើកម្លាំងពលកម្ម។
កម្មវិធីនៃការខុសគ្នានៅក្នុងមុខងារសរុប
អាគុយម៉ង់ខុសគ្នា SQL អាចត្រូវបានប្រើជាមួយមុខងារសរុបណាមួយ។ ប៉ុន្តែសម្រាប់ Min និងអតិបរមាកម្មវិធីរបស់ខ្លួននឹងមានប្រសិទ្ធិភាពទេប៉ុន្តែនៅពេលដែលគណនាផលបូកឬតម្លៃមធ្យមគឺកម្រនឹងស្ថានភាពដែលគ្មាននរណាម្នាក់នឹងត្រូវយកទៅក្នុងគណនីការធ្វើនេះ។
ឧបមាថាយើងចង់ពិនិត្យមើលសមត្ថភាពរបស់ឃ្លាំងរបស់យើងនិងដើម្បីផ្ញើការស្នើរសុំនេះ, គណនាចំនួនសរុបនៃការនៅក្នុងស្តុករមូរ:
ផលបូក SELECT (Ostatki.count) ពី Ostatki |
ស្នើសុំនឹងផ្ដល់ចម្លើយ 143. ប្រសិនបើមាន, ទោះជាយ៉ាងណាយើងនឹងផ្លាស់ប្តូរទៅជា:
ផលបូក SELECT (Ostatki.count ខុសគ្នា) ពី Ostatki |
យើងទទួលបានចំនួនសរុប 119, ជាផ្ទាំងរូបភាពសម្រាប់លេខផ្នែកទី 3 និង 7 គឺមាននៅក្នុងភាគហ៊ុននៅក្នុងចំនួនទឹកប្រាក់ដូចគ្នា។ ទោះជាយ៉ាងណាវាជាការច្បាស់ណាស់ថាចម្លើយគឺខុស។
ត្រូវបានគេប្រើច្រើនបំផុតជាញឹកញាប់នៅក្នុង SQL មួយមុខងារខុសគ្នារាប់។ ដូច្នេះយើងអាចរកឃើញយ៉ាងងាយស្រួលចេញប្រភេទតែមួយគត់របៀបជាច្រើននៃផ្ទាំងរូបភាព, យើងមាន:
ការរាប់ SELECT (Oboi.type ខុសគ្នា) ពី oboi |
និងទទួលបានលទ្ធផលនៃការ 5 - ក្រដាសធម្មតានិងប្លាស្ទិស្រទាប់ទ្វេរដងនិងមិនមែនជាត្បាញក្រណាត់។ ពិតណាស់ទាំងអស់បានគេមើលឃើញការផ្សាយពាណិជ្ជកម្មដូចជា: «តែយើងមានជាង 20 ប្រភេទផ្សេងគ្នានៃផ្ទាំងរូបភាព, "ដោយដែលត្រូវបានន័យថាហាងនេះគឺមិនមែនគ្រាន់តែជាការវិលប្តីប្រពន្ធឡូនិងខុសគ្នានៃប្រភេទសម័យទំនើបផ្ទាំងរូបភាព។
វាជាការគួរឱ្យចាប់អារម្មណ៍ថានៅក្នុងសំណួរដូចគ្នានេះដែរអ្នកអាចបញ្ជាក់មុខងារច្រើនដូចជាការរាប់ចាត់ទុក DISTINCT, និងដោយគ្មានវា។ នោះគឺជាស្ថានភាពតែមួយគត់ដែលខុសគ្នានៅក្នុង Select'e អាចមានវត្តមានច្រើនដង។
ពេលដែលត្រូវបោះបង់ចោលការប្រើប្រាស់នៃអាគុយម៉ង់នេះ
ការប្រើប្រាស់នៃ SQL មួយពីអាគុយម៉ង់ខុសគ្នានេះគួរតែត្រូវបានបោះបង់ចោលនៅក្នុងមួយនៃករណីពីរ:
- អ្នកអនុវត្តការជ្រើសរើសតុមួយនិងមានទំនុកចិត្តនៅក្នុងតម្លៃតែមួយគត់គ្នា។ ក្នុងករណីនេះការប្រើប្រាស់នៃអាគុយម៉ង់នេះគឺមិនសមរម្យនោះទេព្រោះវាជាការផ្ទុកបន្ថែមទៀតនៅលើម៉ាស៊ីនបម្រើឬម៉ាស៊ីនភ្ញៀវ (អាស្រ័យលើប្រភេទនៃ DBMS នេះ) ។
- តើអ្នកមានការភ័យខ្លាចនៃការបាត់បង់ទិន្នន័យរបស់អ្នក។ សូមឱ្យយើងពន្យល់។
ថៅកែឧបមាថាគេសួរអ្នកទៅបញ្ជីផ្ទាំងរូបភាពដែលអ្នកមានជាមួយនឹងការបង្ហាញនៃការតែពីរជួរឈរ - ប្រភេទនិងណ៍។ ចេញពីទំលាប់, អ្នកផ្តល់ឱ្យអាគុយម៉ង់ខុសគ្នាមួយ:
ជ្រើស Oboi.type ខុសគ្នា, Oboi.color ពី oboi ORDER BY Oboi.type |
និង - បាត់បង់ទិន្នន័យមួយចំនួន:
ប្រភេទ | ប៍ន |
ក្រដាស | multicolor |
ក្រដាសស្រទាប់ទ្វេរដង | ត្នោត |
ប្លាស្ទិច | ត្នោត |
ប្លាស្ទិច | ទឹកក្រូច |
ការណាត់ | ផ្កាឈូក |
fleece | ត្នោត |
fleece | ស |
វាអាចផ្តល់នូវចំណាប់អារម្មណ៍ថាផ្ទាំងរូបភាពក្រដាស (Dual-ធម្មតានិងស្រទាប់) យើងបានតែចិត្តរបស់មនុស្សម្នាក់នៅក្នុងការពិតសូម្បីតែនៅក្នុងតុតូចរបស់យើងនៃការទាំងពីរអត្ថបទ (បណ្តាលដោយគ្មានការខុសគ្នា) នេះ:
ប្រភេទ | ប៍ន |
ក្រដាស | multicolor |
ក្រដាស | multicolor |
ក្រដាសស្រទាប់ទ្វេរដង | ត្នោត |
ក្រដាសស្រទាប់ទ្វេរដង | ត្នោត |
ប្លាស្ទិច | ត្នោត |
ប្លាស្ទិច | ទឹកក្រូច |
ការណាត់ | ផ្កាឈូក |
fleece | ស |
fleece | ត្នោត |
ដូច្នេះដូចជានៅក្នុងការសរសេរសំណើជាមួយអាគុយម៉ង់តម្រូវការខុសគ្នាត្រូវប្រុងប្រយ័ត្ននិងមានសមត្ថភាពក្នុងការសម្រេចចិត្តនៅលើកម្មវិធីរបស់វាអាស្រ័យលើការងារនោះទេ។
ជម្រើសខុសគ្នា
ផ្ទុយទៅនឹងការខុសគ្នាអាគុយម៉ង់ - អាគុយម៉ង់ទាំងអស់។ នៅក្នុងកម្មវិធីរបស់ខ្លួនជួរស្ទួនត្រូវបានរក្សាទុក។ ប៉ុន្តែជាមូលដ្ឋានទិន្នន័យលំនាំដើមនិងការរកឃើញថាវាគឺជាការចាំបាច់ដើម្បីបង្ហាញតម្លៃទាំងអស់, អាគុយម៉ង់ទាំងអស់ - វាគឺជាការប្រកួតវគ្គជម្រុះជាងអាគុយម៉ង់មុខងារពិតប្រាកដមួយ។
Similar articles
Trending Now