Categories
Database

មូលដ្ឋានគ្រឹះនៃការប្រើប្រាស់ SQL Joins

មាតិកា

I.   តើអ្វីគឺជា SQL join?

II. ប្រភេទនៃ SQL Joins

III. ការប្រើប្រាស់ INNER JOIN

IV. ការប្រើប្រាស់ LEFT JOIN

V.  ការប្រើប្រាស់ RIGHT JOIN

VI. ការប្រើប្រាស់ FULL JOIN

VII.ការប្រើប្រាស់ CARTESIAN JOIN

VIII.ការប្រើប្រាស់ SELF JOIN

I.          តើអ្វីគឺជា SQL join?

SQL Joins គឺមកពីពាក្យថា Structured Query Languages (SQL) ដែលត្រូវបានប្រើសម្រាប់ធ្វើការបញ្ចូលនូវសំនុំនៃទិន្នន័យក្នុង Tables ចាប់ពីពីរ (Two Tables) ឡើងទៅ។ មុនពេលចូលទៅស៊ីជម្រៅលម្អិអំពី SQL join សូមធ្វើការស្វែងយល់ថា តើ SQL គឺជាអ្វី? ហើយហេតុអ្វីបានជាអ្នករាល់គ្នាចង់ប្រើប្រាស់វាដើម្បីធ្វើប្រតិបត្តិការទៅលើ SQL join?

          SQL គឺជា programming language មួយក្នុងគោលបំណងជាពិសេសណាមួយដែលបាន designed ឡើងដើម្បីគ្រប់គ្រងទៅលើព័ត៌មាននៅក្នុង relational database management system (RDBMS)។ ពាក្យថា relational នៅទីនេះមានន័យថាគឺជា key ដែលវាបញ្ជាក់អំពីប្រព័ន្ធគ្រប់គ្រងទិន្នន័យ (database management system) ដែលត្រូវបានរៀបចំឡើងនូវ relational ជាក់លាក់មួយរវាងសំនុំនៃទិន្នន័យផ្សេងៗគ្នា។

II.         ប្រភេទនៃ SQL Joins

SQL join statement ត្រូវបានគេប្រើប្រាស់សម្រាប់ធ្វើការ combine data ឬក៏ rows ចេញពី tables ចំនួន ២ ឬក៏ច្រើនជាងនេះ ដោយពឹងអាស្រ័យទៅលើ field រវាង tables ទាំងនោះ។ ក្នុង SQL joins ត្រូវបានបែងចែកជាប្រភេទខុសៗគ្នាដូចខាងក្រោម៖

  • INNER JOIN
  • LEFT JOIN
  • RIGHT JOIN
  • FULL JOIN
  • CARTESIAN JOIN
  • SELF JOIN

សូមធ្វើការពិចារណាទៅលើ Tables ចំនួន ២ដូចខាងក្រោម៖

  • table ទី១ ដែលមានឈ្មោះថា “Student

table ទី២ ដែលមានឈ្មោះថា “StudentCourse

III.          ការប្រើប្រាស់ INNER JOIN

Keyword “INNER JOIN” ប្រើសម្រាប់ធ្វើការ selects រាល់ rows ទាំងអស់ចេញពី tables ទាំង២ ដរាបណាលក្ខខណ្ឌទាំងពីរត្រូវគ្នា។ keyword នេះនឹងត្រូវបង្កើតជាសំនុំនៃលទ្ធផលដោយរួមបញ្ចូលរាល់ rows ទាំងអស់ចេញពី Tables ទាំងពីរដែលលក្ខខណ្ឌត្រូវគ្នា បានន័យថា value នៃ field គឺដូចគ្នា។

Syntax:

<strong>ចំណាំ៖</strong><strong></strong>
<strong>table1</strong>: First table.
<strong>table2</strong>: Second table
<strong>matching_column</strong>: Column common to both the tables.

Example Queries (INNER JOIN)

តាមរយៈ Query នេះ យើងនឹងបង្ហាញ names និង age នៃ students ដែលបាន enrolled នូវ course ខុសៗគ្នា។

លទ្ធផល Output

IV.          ការប្រើប្រាស់ LEFT JOIN

ប្រភេទ “LEFT JOIN” ប្រើសម្រាប់ returns នូវ rows ទាំងអស់នៃ table ដែលនៅផ្នែកខាងឆ្វេងរបស់ join ហើយរាល់ rows របស់វាផ្គូរផ្គងទៅនឹង table ដែលស្ថិតនៅផ្នែកខាងស្តាំនៃ join។ រាល់ rows ទាំងអស់ដែលមិន match ទៅនឹង row ដែលនៅផ្នែកខាងស្តាំទេ នោះ result-set នឹងផ្តល់តម្លៃ NULL។ ជាទូទៅ LEFT JOIN ត្រូវបានគេស្គាល់ថាជា LEFT OUTER JOIN

Syntax:

<strong>ចំណាំ៖</strong><strong></strong>
<strong>table1</strong>: First table.
<strong>table2</strong>: Second table
<strong>matching_column</strong>: Column common to both the tables.

Example Queries (LEFT JOIN)

សូមធ្វើការសាកល្បងប្រើប្រាស់ LEFT JOIN

លទ្ធផល Output

V.          ការប្រើប្រាស់ RIGHT JOIN

ប្រភេទ “RIGHT JOIN” មានលក្ខណៈស្រដៀងទៅនឹង LEFT JOIN ដែរ។ ប្រភេទ RIGHT JOIN នេះ នឹង return រាល់ rows ទាំងអស់នៃ table ដែលស្ថិតនៅផ្នែកខាងស្តាំនៃ JOIN ហើយវា match ទៅនឹង rows របស់ table ដែលស្ថិតនៅខាងឆ្វេងនៃ JOIN នោះលទ្ធផល result-set នឹងផ្ទុកនូវ NULL value។ RIGHT JOIN ក៏ត្រូវបានគេហៅថា RIGHT OUTER JOIN ផងដែរ។

Syntax:

<strong>ចំណាំ៖</strong><strong></strong>
<strong>table1</strong>: First table.
<strong>table2</strong>: Second table
<strong>matching_column</strong>: Column common to both the tables.

Example Queries (RIGHT JOIN)

សូមធ្វើការសាកល្បងប្រើប្រាស់ RIGHT JOIN

លទ្ធផល Output

VI.          ការប្រើប្រាស់ FULL JOIN

ប្រភេទ “FULL JOIN” សម្រាប់បង្កើត​នូវ result-set ដោយរួមបញ្ចូលនូវ result-set របស់ LEFT JOIN និង result-set របស់ RIGHT-JOIN។ result-set របស់វា ផ្ទុកនូវរាល់ rows ទាំងអស់នៃ tables ទាំងពីរ។ គ្រប់ rows ទាំងឡាយណាដែលវាមិន match គ្នា នោះ result-set នឹងផ្ទុកនូវ NULL values.

Syntax:

<strong>ចំណាំ៖</strong><strong></strong>
<strong>table1</strong>: First table.
<strong>table2</strong>: Second table
<strong>matching_column</strong>: Column common to both the tables.

Example Queries (FULL JOIN)

សូមធ្វើការសាកល្បងប្រើប្រាស់ FULL JOIN

លទ្ធផល Output

VII.          ការប្រើប្រាស់ CARTESIAN JOIN

ប្រភេទ “CARTESIAN JOIN” ត្រូវបានគេស្គាល់ថាជា CROSS JOIN។ នៅក្នុង CARTESIAN JOIN ប្រើបានទាល់តែមានការចូលរួមនូវ row និមួយៗនៃ table ទៅរាល់ row នៃ table ផ្សេងទៀត។ វាច្រើនតែកើតឡើងនៅពេលដែល Column ត្រូវគ្នា ឬក៏លក្ខខណ្ឌ WHERE មិនត្រូវបានបញ្ជាក់។

  • ក្នុងករណីដែលមិនមានលក្ខខណ្ឌ WHERE នោះ CARTESIAN JOIN នឹងមានលក្ខណៈដូចទៅនឹង CARTESIAN PRODUCT ឧទាហរណ៏ ចំនួននៃ rows ទាំងអស់ នៅក្នុង result-set គឺជា product នៃ​ ចំនួន rows ទាំងអស់របស់ tables ទី២
  • ក្នុងករណីដែលមានវត្តមានលក្ខខណ្ឌ WHERE នោះ JOIN ហ្នឹង នឹងក្លាយជា function ដូចទៅនឹង INNER JOIN
  • និយាយជាទូទៅ CROSS JOIN គឺប្រហាក់ប្រហែលទៅនឹង inner join ដែល join-condition គឺមានតម្លៃពិត

Syntax:

<strong>ចំណាំ៖</strong><strong></strong>
<strong>table1</strong>: First table.
<strong>table2</strong>: Second table

Example Queries (CROSS JOIN)

នៅក្នុង Query ខាងក្រោម យើងនឹងធ្វើការ Select នូវ name ហើយនិង ​age ចេញពី table “Student” ហើយនិង COURSE_ID ចេញពី table “StudentCourse”។ ក្នុង output យើងអាចឃើញថា row និមួយៗនៃ table “Student” ត្រូវបាន joined ជាមួយនឹងរាល់ row នៃ table “StudentCourse”។ ដូចនេះ Total rows ក្នុង result-set = 10 x 10 =100 សូមធ្វើការសាកល្បងប្រើប្រាស់ CROSS JOIN

លទ្ធផល Output

VIII.          ការប្រើប្រាស់ SELF JOIN

ប្រភេទ “SEFT JOIN” ត្រូវបានប្រើដើម្បីធ្វើការ Joined ខ្លួនឯង។ row និមួយៗនៃ table ត្រូវបាន join ជាមួយ row របស់ខ្លួនឯង ហើយរាល់ rows ដទៃទៀតគឺពឹងអាស្រ័យទៅលើលក្ខខណ្ឌមួយចំនួន។ អាចនិយាយម្យ៉ាងទៀតថា វាគឺជាការ join រវាងការចម្លង table ចំនួន២ដូចគ្នា។

Syntax:

<strong>ចំណាំ៖</strong><strong></strong>
<strong>table_name</strong>: Name of the table.

some_condition: Condition for selecting the rows

Example Queries (SELF JOIN)

សូមធ្វើការសាកល្បងប្រើប្រាស់ SELF JOIN

លទ្ធផល Output

By sysomeho

Ho Sysome obtains B.S. degree in Computer Science from Phnom Penh Internation University (PPIU) in 2013 and currently studying Master of Science in IT (MSIT) at Asia Euro University (AEU). He worked as an IT Officer at Microfinance Institute and Bank in Phnom Penh. He is familar in programming language such as VB.NET, Java (Java2EE, Spring), Codeigniter, Laravel, mysql, sql server and so on. He enjoys sharing knowledges, learns from other, and develop himself.
Find him on Facebook: Spy Ro, Linkedin: Sysome HO.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.