កុំព្យូទ័រ, ការសរសេរកម្មវិធី
ខាងឆ្វេងចូលរួម (SQL មួយ) - ឧទាហរណ៍មួយដែលជាការរៀបរាប់លម្អិតនៃការប្រើប្រាស់កំហុស
នៅក្នុងមូលដ្ឋានទិន្នន័យទំនាក់ទំនងពិតប្រាកដណាមួយដែលទាំងអស់ត្រូវបានចែកចាយពលើតុដាច់ដោយឡែកមួយ។ មនុស្សជាច្រើននៃតារាងដែលត្រូវបានកំណត់ចេញនៅក្នុងគម្រោងការទំនាក់ទំនងជាមួយគ្នា។ ទោះជាយ៉ាងណា, ជាមួយនឹងជំនួយរបស់ សំណួរ SQL វាគឺអាចធ្វើបានណាស់ក្នុងការដាក់តំណភ្ជាប់រវាងទិន្នន័យដែលបានបង្កប់នៅក្នុងសៀគ្វីមិនជាមួយ។ នេះត្រូវបានធ្វើឡើងដោយសម្តែងការតភ្ជាប់ចូលរួមដែលអនុញ្ញាតឱ្យអ្នកដើម្បីកសាងទំនាក់ទំនងរវាងចំនួននៃតារាងណាមួយ, និងសូម្បីតែការតភ្ជាប់គម្លាតហាក់ដូចជាព។
អត្ថបទនេះនឹងនិយាយជាពិសេសអំពីខាងក្រៅខាងឆ្វេងចូលរួម។ មុននឹងរៀបរាប់ពីប្រភេទនៃការតភ្ជាប់នេះបន្ថែមក្នុងតារាងមូលដ្ឋានទិន្នន័យមួយចំនួន។
ការរៀបចំតារាងចាំបាច់
ឧទាហរណ៍នៅក្នុងមូលដ្ឋានទិន្នន័យរបស់យើងគឺមានអំពីប្រជាជននិងអចលនទ្រព្យរបស់ពួកគេ។ សង្ខេបដោយផ្អែកលើតារាងទាំងបី: ប្រជាជន (មនុស្ស), រៀលធី (អចលនទ្រព្យ), Realty_peoples (ទំនាក់ទំនងតារាងមនុស្សដែលពីអ្វីដែលទ្រព្យសម្បត្ដិជារបស់) ។ សន្មត់ទិន្នន័យខាងក្រោមនេះត្រូវបានរក្សាទុកក្នុងតារាងរបស់ប្រជាជន:
ប្រជាជន | ||||
លេខសម្គាល់ | L_name | F_name | Middle_name | ថ្ងៃខួបកំណើត |
1 | Ivanova | Daria | ខ | 07/16/2000 |
2 | Pugin | Vladislav | Nikolaevich | 29.01.1986 |
3 | Evgenin | លោក Alexander | Federovich | 04/30/1964 |
4 | Annina | ស្រឡាញ់ | លោក P. | 31.12.1989 |
5 | Gerasimovsky | សង្ឃឹម | លោក P. | 14.03.1992 |
6 | Gerasimovsky | លោក Oleg | Albertovich | 01/29/1985 |
7 | Sukhanovskaya | គណៈវិនិច្ឆ័យ | ក | 09/25/1976 |
8 | Sukhanovskaya | លោកស្រី Julia | Y. | 01.10.2001 |
អចលនទ្រព្យ:
រៀលធី | |
លេខសម្គាល់ | អាសយដ្ឋាន |
1 | Arkhangelsk, ul ។ Voronin, 7 ឃ។ kv.6 |
2 | Arkhangelsk, ul ។ Severodvinskaya, 84 ឃ។ , q ។ 9 BR ។ 5 |
3 | តំបន់ Arkhangelsk, Severodvinsk នៅ, ទី។ លេនីន, 134 ឃ។ , q ។ 85 |
4 | តំបន់ Arkhangelsk, Novodvinsk, ul ។ Proletarshaya, 16 ឃ។ , q ។ 137 |
5 | Arkhangelsk, PL ។ Terekhina, 89 ឃ។ , q ។ 13 |
ទំនាក់ទំនងមនុស្ស - ទ្រព្យសម្បត្តិ:
Realty_peoples | ||
id_peoples | id_realty | ប្រភេទ |
7 | 3 | អឌ្ឍសិទ្ធិសរុប |
8 | 3 | អឌ្ឍសិទ្ធិសរុប |
3 | 5 | អចលនទ្រព្យ |
7 | 1 | អចលនទ្រព្យ |
5 | 4 | ចំណែករួម |
6 | 4 | ចំណែករួម |
ខាងឆ្វេងចូលរួម (SQL) - សង្ខេប
បរិវេណខាងឆ្វេងមានវាក្យសម្ពន្ធខាងក្រោម:
Table_A ឆ្វេងចូលរួម table_B [{ស្តីពីការព្យាករណ៍} | {ប្រើ spisok_ ជាមួយ tolbtsov}] |
និងគំនូរបំព្រួញដូចខាងក្រោម:
និងការបញ្ចេញមតិនេះត្រូវបានបកប្រែជា "ជ្រើសទាំងអស់ដោយគ្មានករណីលើកលែង, បន្ទាត់នៃតារាង A និង B ដែលតារាងដើម្បីបង្ហាញតែជួរដេកនៃការព្យាករណ៍នេះផ្គូផ្គង។ ប្រសិនបើតារាងត្រូវបានរកឃើញក្នុងតារាងខ្សែអក្សរសម្រាប់គូមួយ, បន្ទាប់មកបំពេញជួរឈរលទ្ធផលគ្មាន - តម្លៃ "។
ភាគច្រើនជាញឹកញាប់នៅពេលដែលការតភ្ជាប់បានចាកចេញត្រូវបានបង្ហាញលើដោយប្រើនឹងត្រូវបានប្រើនៅពេលដែលឈ្មោះជួរឈរដែលត្រូវបានគ្រោងទុកដើម្បីធ្វើឱ្យការតភ្ជាប់នេះគឺដូចគ្នា។
ចូលរួមឆ្វេង - ឧទាហរណ៍នៃការប្រើប្រាស់
ជាមួយនឹងការតភ្ជាប់នៃខាងឆ្វេងដែលយើងអាចមើលឃើញ, មនុស្សទាំងអស់ពីបញ្ជីប្រសិនបើមានទ្រព្យសម្បត្ដិជន។ ដើម្បីធ្វើដូចនេះនៅខាងឆ្វេងចូលរួមឧទាហរណ៍សំណួរ SQL:
ជន SELECT ។ *, Realty_peoples.id_realty, Realty_peoples.type ពីមនុស្សដែលនៅលើឆ្វេងចូលរួម Realty_peoples = Realty_peoples.id_peoples Peoples.id! |
ជាមួយនឹងលទ្ធផលដូចខាងក្រោម:
Query1 | ||||||
លេខសម្គាល់ | L_name | F_name | Middle_name | ថ្ងៃខួបកំណើត | id_realty | ប្រភេទ |
1 | Ivanova | Daria | ខ | 07/16/2000 | ||
2 | Pugin | Vladislav | Nikolaevich | 29.01.1986 | ||
3 | Evgenin | លោក Alexander | Federovich | 04/30/1964 | 5 | អចលនទ្រព្យ |
4 | Annina | ស្រឡាញ់ | លោក P. | 31.12.1989 | ||
5 | Gerasimovsky | សង្ឃឹម | លោក P. | 14.03.1992 | 4 | ចំណែករួម |
6 | Gerasimovsky | លោក Oleg | Albertovich | 01/29/1985 | 4 | ចំណែករួម |
7 | Sukhanovskaya | គណៈវិនិច្ឆ័យ | ក | 09/25/1976 | 1 | អចលនទ្រព្យ |
7 | Sukhanovskaya | គណៈវិនិច្ឆ័យ | ក | 09/25/1976 | 3 | អឌ្ឍសិទ្ធិសរុប |
8 | Sukhanovskaya | លោកស្រី Julia | Y. | 01.10.2001 | 3 | អឌ្ឍសិទ្ធិសរុប |
ដូចដែលយើងបានឃើញ Ivanova Darya Pugin Vladislav បាននិង Anninoy Lyubovi ដែលបានចុះឈ្មោះគ្មានសិទ្ធិអចលនទ្រព្យ។
និងអ្វីដែលនឹងយើងបានទទួលដោយប្រើខាងក្នុងមួយបានចូលរួមខាងក្នុងចូលរួម? ដូចដែលអ្នកបានដឹងហើយថាវាមិនរាប់បញ្ចូលជួរដេកដែលមិនផ្គូផ្គងដូច្នេះបីចេញពីគំរូចុងក្រោយរបស់យើងនឹងគ្រាន់តែត្រូវបានធ្លាក់ចុះ:
Query1 | ||||||
លេខសម្គាល់ | L_name | F_name | Middle_name | ថ្ងៃខួបកំណើត | id_realty | ប្រភេទ |
3 | Evgenin | លោក Alexander | Federovich | 04/30/1964 | 5 | អចលនទ្រព្យ |
5 | Gerasimovsky | សង្ឃឹម | លោក P. | 14.03.1992 | 4 | ចំណែករួម |
6 | Gerasimovsky | លោក Oleg | Albertovich | 01/29/1985 | 4 | ចំណែករួម |
7 | Sukhanovskaya | គណៈវិនិច្ឆ័យ | ក | 09/25/1976 | 1 | អចលនទ្រព្យ |
7 | Sukhanovskaya | គណៈវិនិច្ឆ័យ | ក | 09/25/1976 | 3 | អឌ្ឍសិទ្ធិសរុប |
8 | Sukhanovskaya | លោកស្រី Julia | Y. | 01.10.2001 | 3 | អឌ្ឍសិទ្ធិសរុប |
វានឹងហាក់បីដូចថាកំណែទីពីរផងដែរបានជួបលក្ខខណ្ឌនៃបញ្ហារបស់យើង។ ទោះជាយ៉ាងណា, ប្រសិនបើយើងចាប់ផ្តើមដើម្បីភ្ជាប់នៅលើផ្សេងទៀត, និងតុមួយផ្សេងទៀត, មនុស្សបីនាក់រួចទៅហើយពីលទ្ធផលបានបាត់បង់ irretrievably ។ ដូច្នេះនៅក្នុងការអនុវត្តនៅពេលដែលរួមបញ្ចូលគ្នារវាងតុច្រើនត្រូវបានគេប្រើជាញឹកញាប់ជាច្រើនទៀតឆ្វេងនិងស្តាំការតភ្ជាប់ជាងខាងក្នុងចូលរួម។
នឹងបន្តសម្លឹងមើលទៅខាងឆ្វេងចូលរួមឧទាហរណ៍ SQL ។ ភ្ជាប់តារាងជាមួយជាមួយអាសយដ្ឋាននៃផ្ទះរបស់យើង:
ជន SELECT ។ *, Realty_peoples.id_realty, Realty_peoples.type, Realty.address ពីមនុស្ស ឆ្វេងចូលរួម Realty_peoples លើ Peoples.id = Realty_peoples.id_peoples ឆ្វេងចូលរួមរៀលធីលើ Realty.id = Realty_peoples.id_realty |
ឥឡូវនេះយើងទទួលបានមិនត្រឹមតែជាប្រភេទមួយនៃច្បាប់ប៉ុណ្ណោះទេថែមទាំងអាសយដ្ឋានរបស់អចលនទ្រព្យ:
Query1 | |||||||
លេខសម្គាល់ | L_name | F_name | Middle_name | ថ្ងៃខួបកំណើត | id_realty | ប្រភេទ | អាសយដ្ឋាន |
1 | Ivanova | Daria | ខ | 07/16/2000 | |||
2 | Pugin | Vladislav | Nikolaevich | 29.01.1986 | |||
3 | Evgenin | លោក Alexander | Federovich | 04/30/1964 | 5 | អចលនទ្រព្យ | Arkhangelsk, PL ។ Terekhina, 89 ឃ។ , q ។ 13 |
4 | Annina | ស្រឡាញ់ | លោក P. | 31.12.1989 | |||
5 | Gerasimovsky | សង្ឃឹម | លោក P. | 14.03.1992 | 4 | ចំណែករួម | តំបន់ Arkhangelsk, Novodvinsk, ul ។ Proletarshaya, 16 ឃ។ , q ។ 137 |
6 | Gerasimovsky | លោក Oleg | Albertovich | 01/29/1985 | 4 | ចំណែករួម | តំបន់ Arkhangelsk, Novodvinsk, ul ។ Proletarshaya, 16 ឃ។ , q ។ 137 |
7 | Sukhanovskaya | គណៈវិនិច្ឆ័យ | ក | 09/25/1976 | 3 | អឌ្ឍសិទ្ធិសរុប | តំបន់ Arkhangelsk, Severodvinsk នៅ, ទី។ លេនីន, 134 ឃ។ , q ។ 85 |
7 | Sukhanovskaya | គណៈវិនិច្ឆ័យ | ក | 09/25/1976 | 1 | អចលនទ្រព្យ | Arkhangelsk, ul ។ Voronin, 7 ឃ។ kv.6 |
8 | Sukhanovskaya | លោកស្រី Julia | Y. | 01.10.2001 | 3 | អឌ្ឍសិទ្ធិសរុប |
តំបន់ Arkhangelsk, Severodvinsk នៅ, ទី។ លេនីន, 134 ឃ។ , q ។ 85 |
ចូលរួមឆ្វេង - ការប្រើប្រាស់ធម្មតានៃកំហុស: តារាងនីតិវិធីមិនត្រឹមត្រូវ
កំហុសមូលដ្ឋានបានធ្វើឡើងនៅខាងក្រៅខាងឆ្វេងចូលរួមតុពីរ:
- ត្រឹមត្រូវបានជ្រើសរើសជាគោលបំណងនៃតុដែលទិន្នន័យត្រូវបានបាត់បង់។
- ដែលជាកន្លែងដែលមានកំហុសពេលប្រើសំណួរជាមួយនឹងការចូលរួមតុ។
សូមពិចារណាកំហុសជាលើកដំបូង។ មុនពេលសម្រេចចិត្តនៃបញ្ហាណាមួយដែលគួរតែត្រូវបានយល់យ៉ាងច្បាស់ថាអ្វីដែលយើងចង់ទទួលបាននៅទីបញ្ចប់។ នៅក្នុងឧទាហរណ៍នេះខាងលើនេះយើងបានយកម្ដងមួយមនុស្សនោះទេប៉ុន្តែបានបាត់បង់ទាំងស្រុងអំពីវត្ថុដែលនៅក្រោមចំនួន 2 ដែលមានម្ចាស់មិនត្រូវបានរកឃើញ។
ប្រសិនបើយើងបានផ្លាស់ប្តូរតារាងក្នុងសំណួរនៅក្នុងទីកន្លែងមួយចំនួន, ហើយនឹងចាប់ផ្តើមជាមួយនឹង« ... ពីរៀលធីបានចាកចេញពីប្រជា ... »ចូលរួមជាអចលនទ្រព្យណាមួយនោះយើងនឹងមិនបានបាត់បង់, អ្នកនឹងមិនត្រូវបានប្រាប់អំពីមនុស្ស។
ប៉ុន្តែមិនត្រូវភ័យខ្លាចនៃការតភ្ជាប់ខាងឆ្វេង, ប្ដូរទៅជាការពេញលេញពីខាងក្រៅដែលត្រូវបានរួមបញ្ចូលនៅក្នុងលទ្ធផលនិងការផ្គូផ្គងនិងមិនបន្ទាត់ដែលផ្គូផ្គង។
បន្ទាប់ពីទាំងអស់, បរិមាណនៃគំរូនេះ ជាញឹកញាប់គឺមានទំហំធំខ្លាំងណាស់, និងទិន្នន័យបន្ថែមទៀតគឺពិតជាគ្មានប្រយោជន៍។ អ្វីដែលមេ - ដើម្បីរកអ្វីដែលអ្នកចង់បានដើម្បីទទួលបានលទ្ធផលមួយ: ប្រជាជនទាំងអស់ជាមួយនឹងបញ្ជីមួយនៃទ្រព្យសម្បត្ដិដែលអាចប្រើបានរបស់ពួកគេឬបញ្ជីអចលនទ្រព្យទាំងមូលជាមួយនឹងម្ចាស់របស់ពួកគេ (ប្រសិនបើមាន) ។
ចូលរួមឆ្វេង - ការប្រើប្រាស់ធម្មតានៃកំហុស: សំណើត្រឹមត្រូវពេលដែលការកំណត់លក្ខខណ្ឌក្នុងការដែលជាកន្លែងដែល
កំហុសទីពីរផងដែរត្រូវបានភ្ជាប់ជាមួយការបាត់បង់ទិន្នន័យនិងមិនតែងតែច្បាស់ភ្លាម។
តោះត្រឡប់ទៅសំណួរនៅពេលដែលយើងបានចាកចេញពីការតាមរយៈការតភ្ជាប់ដែលបានទទួលទិន្នន័យសម្រាប់មនុស្សទាំងអស់ដែលមានស្រាប់របស់ខ្លួននិងទ្រព្យសម្បត្តិ។ ចូរនឹកចាំដូចខាងក្រោមជាឧទាហរណ៍ជាមួយឆ្វេងចូលរួម SQL:
ពីមនុស្សដែលនៅលើឆ្វេងចូលរួម Realty_peoples = Realty_peoples.id_peoples Peoples.id! |
ឧបមាថាយើងចង់បញ្ជាក់ពីការស្នើរសុំនេះនិងមិនទិន្នផលទិន្នន័យ, ដែលជាកន្លែងដែលប្រភេទនៃច្បាប់ - "លក្ខណៈសម្បត្តិ" ។ ប្រសិនបើយើងគ្រាន់តែបន្ថែម, ប្រើបានចាកចេញចូលរួម SQL មួយ, ឧទាហរណ៍នៃលក្ខខណ្ឌដូចខាងក្រោមនេះ:
...
ប្រភេទដែលជាកន្លែងដែល <> "លក្ខណៈសម្បត្តិ" |
យើងនឹងបាត់បង់ទិន្នន័យលើមនុស្សដែលមានទ្រព្យសម្បត្តិនោះទេដោយសារតែការគ្មានទទេមិនត្រូវមានតម្លៃបើប្រៀបធៀបដូចខាងក្រោម:
Query1 | ||||||
លេខសម្គាល់ | L_name | F_name | Middle_name | ថ្ងៃខួបកំណើត | id_realty | ប្រភេទ |
5 | Gerasimovsky | សង្ឃឹម | លោក P. | 14.03.1992 | 4 | ចំណែករួម |
6 | Gerasimovsky | លោក Oleg | Albertovich | 01/29/1985 | 4 | ចំណែករួម |
7 | Sukhanovskaya | គណៈវិនិច្ឆ័យ | ក | 09/25/1976 | 3 | អឌ្ឍសិទ្ធិសរុប |
8 | Sukhanovskaya | លោកស្រី Julia | Y. | 01.10.2001 | 3 | អឌ្ឍសិទ្ធិសរុប |
ដើម្បីបងា្កកំហុសកើតឡើងចំពោះហេតុផលនេះ, វាជាការល្អបំផុតដើម្បីកំណត់លក្ខខណ្ឌជ្រើសរើសភ្លាមលើការតភ្ជាប់។ យើងបានស្នើឱ្យពិចារណាដូចខាងក្រោមជាមួយនឹងខាងឆ្វេងចូលរួមឧទាហរណ៍ SQL ។
ជន SELECT ។ *, Realty_peoples.id_realty, Realty_peoples.type ពីមនុស្ស ឆ្វេងចូលរួម Realty_peoples លើ (Peoples.id = Realty_peoples.id_peoples និងប្រភេទ <> "អចលនទ្រព្យ") |
ជាលទ្ធផលនឹងមានដូចខាងក្រោម:
Query1 | ||||||
លេខសម្គាល់ | L_name | F_name | Middle_name | ថ្ងៃខួបកំណើត | id_realty | ប្រភេទ |
1 | Ivanova | Daria | ខ | 07/16/2000 | ||
2 | Pugin | Vladislav | Nikolaevich | 29.01.1986 | ||
3 | Evgenin | លោក Alexander | Federovich | 04/30/1964 | ||
4 | Annina | ស្រឡាញ់ | លោក P. | 31.12.1989 | ||
5 | Gerasimovsky | សង្ឃឹម | លោក P. | 14.03.1992 | 4 | ចំណែករួម |
6 | Gerasimovsky | លោក Oleg | Albertovich | 01/29/1985 | 4 | ចំណែករួម |
7 | Sukhanovskaya | គណៈវិនិច្ឆ័យ | ក | 09/25/1976 | 3 | អឌ្ឍសិទ្ធិសរុប |
8 | Sukhanovskaya | លោកស្រី Julia | Y. | 01.10.2001 | 3 | អឌ្ឍសិទ្ធិសរុប |
ដូច្នេះដោយសាមញ្ញដូចខាងក្រោមទៅខាងឆ្វេងចូលរួមឧទាហរណ៍ SQL មួយ, យើងបានទទួលបញ្ជីនៃមនុស្សទាំងអស់ដែលជាការផ្លាស់ប្តូរបន្ថែមទៀត, មួយនៃលក្ខណៈសម្បត្តិទាំងនេះនៅក្នុងមួយភាគហ៊ុន / ភាពជាម្ចាស់រួមគ្នា។
ជាការសន្និដ្ឋានមួយដែលខ្ញុំចង់បញ្ជាក់ជាថ្មីម្តងទៀតថាជាគំរូមួយនៃពណាមួយពីមូលដ្ឋានទិន្នន័យមួយដែលត្រូវតែទទួលខុសត្រូវ។ ការ nuances ជាច្រើនបានបើកនៅចំពោះមុខយើងជាមួយឆ្វេងចូលរួមឧទាហរណ៍ធម្មតា SQL មួយ, ការពន្យល់ដែលមួយ - មុនពេលអ្នកចាប់ផ្តើមសរសេរសូម្បីតែសំណួរមូលដ្ឋាន, អ្នកត្រូវតែដោយប្រុងប្រយ័ត្នដើម្បីយល់ពីអ្វីដែលយើងចង់ទទួលបាននៅទីបញ្ចប់។ សូមសំណាងល្អ!
Similar articles
Trending Now