#AskMe

មូលដ្ឋានគ្រឹះនៃការប្រើប្រាស់ SQL UNION, UNION ALL និង Inline View

មាតិកា

I.   ការប្រើប្រាស់ SQL UNION

II. ការប្រើប្រាស់ SQL UNION ALL

III. ការប្រើប្រាស់ SQL Inline View

I.          ការប្រើប្រាស់ SQL UNION

គោលបំណងនៃការប្រើប្រាស់ SQL UNION query គឺដើម្បីធ្វើការ combine នូវ results របស់ queries ចំនួន២បញ្ចូលគ្នា។ ម្យ៉ាងវិញទៀត យើងអាចនិយាយបានថា នៅពេលដែលប្រើ UNION មានតែ unique values តែមួយគត់ដែលត្រូវបាន returned (ស្រដៀងទៅនឹង SELECT DISTINCT)។

Syntax

ឧទាហរណ៍ៈ សូមមើល Tables ខាងក្រោម៖

Table: “Store_Information”

Table: “Internet_Sales

ដើម្បីធ្វើការស្វែងរកកាលបរិច្ឆេទទាំងអស់ដែលមានប្រតិបត្តិការលក់ យើងត្រូវប្រើប្រាស់ SQL Statement ដូចខាងក្រោម៖

លទ្ធផល

កំណត់ចំណាំៈ ប្រសិនបើយើងសរសេរ “SELECT DISTINCT Txn_Date” នៅក្នុង SQL Statement ទាំងពីរ ពេលនោះវានឹងទទួលបានលទ្ធផលដូចគ្នា។

II.          ការប្រើប្រាស់ SQL UNION ALL

គោលបំណងនៃការប្រើប្រាស់​ SQL UNION ALL command គឺដើម្បីបញ្ចូលនូវ results នៃ queries ទាំង២បញ្ចូលគ្នាដោយគ្មានការលុបនូវតម្លៃ duplicate values។

តាមរយៈឧទាហរណ៍ខាងលើ យើងចង់ធ្វើការស្វែងរកនូវកាលបរិច្ឆេទទាំងអស់ដែលមានប្រតិបត្តិការលក់នៅក្នុង Store ព្រមទាំងកាលបរិច្ឆេទទាំងអស់ដែលមានការលក់នៅលើ internet ដូចនេះយើងសរសរ SQL Statement ដូចខាងក្រោមនេះ៖

លទ្ធផល

សរុបសេចក្តីមកយើងសង្កេតឃើញថា ការប្រើប្រាស់ UNION និង UNION ALL គឺក្នុងគោលបំណងសម្រាប់ combine results នៃ SQL queries ទាំងអស់បញ្ចូលគ្នា។ ចំណែកឯភាពខុសគ្នានោះត្រង់ថា UNION គឺវាប្រើសម្រាប់ distinct values (តម្លៃមិនស្ទួន) រីឯ UNION ALL សម្រាប់ select រាល់ values ទាំងអស់។

III.          ការប្រើប្រាស់ SQL Inline View

Inline view គឺជា SELECT Statement ស្ថិតនៅក្នុង FROM clause។ ដូចដែលយើងដឹងហើយថា View គឺជា​ virtual table (table សិប្បនិមិត្ត) ដែលមានលក្ខណៈនៃ table មិនទាន់ផ្ទុកនូវទិន្នន័យពិតប្រាកដ។ នៅក្នុង inline view ប្រើសម្រាប់ធ្វើការជំនួសអោយការបញ្ជាក់ឈ្មោះរបស់ table នៅបន្ទាប់ពី keyword “FROM” ដែលមានប្រភពទិន្នន័យពិតចេញពី inline view។ ពេលខ្លះ inline view សំដៅទៅលើ derived table។

Syntax:

ឧបមាថាយើងមាន table ចំនួន២។ table ទី១មានឈ្មោះថា “User_Address” ដែលវា map user និមួយៗទៅនឹង ZIP code។ table ទី២មានឈ្មោះថា “User_Score” ដែលកត់ត្រារាល់ scores របស់ user។ សំនួរសួរថា តើសរសេរ SQL query យ៉ាងដូចម្តេចដើម្បីស្វែងរកចំនួន users ដែលទទួលបានពិន្ទុ (score) ខ្ពស់ជាង 200 សម្រាប់ ZIP code និមួយៗ?

Query 1

Query 2

ក្នុងកូដដែលមានពណ៌ក្រហមតំណាងអោយ inline view។ មានគុណប្រយោជន៏ចំនួន២ក្នុងការប្រើប្រាស់ inline view

  1. យើងមិនចាំបាច់បង្កើតនូវ temporary table។ វាគុណសម្បត្តិការពារនូវ database មិនអោយមាន object (សំដៅលើ table, …) ច្រើនពេក ដែលជារឿងល្អព្រោះ object បន្ថែមនីមួយៗនៅក្នុង database ត្រូវចំណាយ resources ជាច្រើនដើម្បី manage។
  2. យើងអាចប្រើប្រាស់ Single SQL query ដើម្បីបំពេញនូវអ្វីដែលចង់បាន។

ចំណាំៈ ចូរកំណត់សម្គាល់ថា យើងប្រើប្រាស់ inline view ដូចគ្នាទៅនឹងការប្រើប្រាស់ table ដែរ។ ដោយប្រៀបធៀប Query 2 និង Query 3 យើងឃើញថាភាពខុសគ្នាតែមួយគត់គឺយើងជំនួសឈ្មោះ temporary table នៅក្នុង Query 2 ជាមួយនឹង Inline view statement នៅក្នុង Query 3។ អ្វីៗផ្សេងទៀតគឺនៅដដែល។