Site icon บริษัท โค๊ดบี จำกัด

MySQL ความต่างระหว่าง LEFT, RIGHT, INNER และ OUTER JOIN

ความต่างระหว่าง LEFT-RIGHT-INNER-OUTER-JOIN-7

ความต่างระหว่าง LEFT-RIGHT-INNER-OUTER-JOIN-7

&NewLine;<figure class&equals;"wp-block-video"><&sol;figure>&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"wp-block-paragraph">จากบทความเรื่องการใช้งาน UNION เพื่อรวมข้อมูลมากกว่า 2 ตาราง ใน MySQL <a rel&equals;"noreferrer noopener" href&equals;"https&colon;&sol;&sol;www&period;codebee&period;co&period;th&sol;labs&sol;วิธี-query-ข้อมูลใน-mysql-แบบกำหนด&sol;" target&equals;"&lowbar;blank">การใช้งาน UNION ใน MySQL<&sol;a> คำสั่งการ JOIN ข้อมูลใน MySQL นั้น จะแตกต่างจากคำสั่งการ UNION คือ การ JOIN จะเป็นการรวมข้อมูลของทุกตาราง ไว้เป็นชุดเดียวกัน แต่ยังเก็บ Column ของทุกตารางไว้ทั้งหมด ส่วนการ UNION จะเป็นการรวมข้อมูล ทั้งตาราง และ Column มาไว้ในตารางหลักเพียงที่เดียว<&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<div style&equals;"height&colon;50px" aria-hidden&equals;"true" class&equals;"wp-block-spacer"><&sol;div>&NewLine;&NewLine;&NewLine;&NewLine;<h4 class&equals;"wp-block-heading">เริ่มจาก ทำความเข้าใจก่อนว่า ตารางไหน LEFT และตารางไหน RIGHT<&sol;h4>&NewLine;&NewLine;&NewLine;&NewLine;<div style&equals;"height&colon;20px" aria-hidden&equals;"true" class&equals;"wp-block-spacer"><&sol;div>&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"wp-block-paragraph">ก่อนจะเริ่มใช้คำสั่ง JOIN ใน MySQL ทำความเข้าใจก่อนว่า อันไหนคือตาราง LEFT และ อันไหนคือตาราง RIGHT อธิบายให้เข้าใจง่าย ๆ คือ ตารางไหนอยู่ทางซ้ายมือของเรา คือ Left Table ตารางไหนอยู่ทางขวามือของเรา คือ Right Table ดูอธิบายตามตามด้านล่างครับ<&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"wp-block-paragraph"><strong>companies คือตารางซ้าย และ suppliers คือตารางขวา<&sol;strong><&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<figure class&equals;"wp-block-image size-large"><img src&equals;"https&colon;&sol;&sol;www&period;codebee&period;co&period;th&sol;labs&sol;wp-content&sol;uploads&sol;2020&sol;10&sol;ความต่างระหว่าง-LEFT-RIGHT-INNER-OUTER-JOIN-1-940x274&period;jpg" alt&equals;"" class&equals;"wp-image-5588" data-full&equals;"https&colon;&sol;&sol;codebee&period;co&period;th&sol;labs&sol;wp-content&sol;uploads&sol;2020&sol;10&sol;ความต่างระหว่าง-LEFT-RIGHT-INNER-OUTER-JOIN-1&period;jpg" data-full-size&equals;"1280x373" &sol;><&sol;figure>&NewLine;&NewLine;&NewLine;&NewLine;<div style&equals;"height&colon;50px" aria-hidden&equals;"true" class&equals;"wp-block-spacer"><&sol;div>&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"wp-block-paragraph"><strong>แต่ถ้าสลับตำแหน่งกันแบบนี้ suppliers จะกลายเป็นตารางซ้าย และ companies คือตารางขวา<&sol;strong><&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<figure class&equals;"wp-block-image size-large"><img src&equals;"https&colon;&sol;&sol;www&period;codebee&period;co&period;th&sol;labs&sol;wp-content&sol;uploads&sol;2020&sol;10&sol;ความต่างระหว่าง-LEFT-RIGHT-INNER-OUTER-JOIN-2-940x274&period;jpg" alt&equals;"" class&equals;"wp-image-5589" data-full&equals;"https&colon;&sol;&sol;codebee&period;co&period;th&sol;labs&sol;wp-content&sol;uploads&sol;2020&sol;10&sol;ความต่างระหว่าง-LEFT-RIGHT-INNER-OUTER-JOIN-2&period;jpg" data-full-size&equals;"1280x373" &sol;><&sol;figure>&NewLine;&NewLine;&NewLine;&NewLine;<div style&equals;"height&colon;100px" aria-hidden&equals;"true" class&equals;"wp-block-spacer"><&sol;div>&NewLine;&NewLine;&NewLine;&NewLine;<h4 class&equals;"wp-block-heading">อธิบายการ JOIN แต่ละแบบ<&sol;h4>&NewLine;&NewLine;&NewLine;&NewLine;<div style&equals;"height&colon;20px" aria-hidden&equals;"true" class&equals;"wp-block-spacer"><&sol;div>&NewLine;&NewLine;&NewLine;&NewLine;<ul class&equals;"wp-block-list"><li><strong>LEFT JOIN<&sol;strong> คือ การรวมข้อมูลของตารางฐานข้อมูล ตั้งแต่ 2 ตารางขึ้นไป โดยให้ความสำคัญกับตารางทางฝั่งซ้าย <&sol;li><&sol;ul>&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"wp-block-paragraph">ความหมายคือ เรียกข้อมูลตารางทางซ้ายมาทั้งหมดเมื่อเข้าเงื่อนไข ส่วนตารางทางฝั่งขวา ถ้าไม่มีข้อมูลจะแสดงเป็น NULL ตัวอย่างตามภาพด้านล่าง ข้อมูลตาราง LEFT มาทั้งหมด แต่ข้อมูลตาราง RIGHT มี 1 Row ที่เป็นค่า NULL เพราะไม่ตรงตามเงื่อนไข <em>&lpar;companies&period;company&lowbar;id &equals; suppliers&period;supplier&lowbar;id&rpar;<&sol;em><&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<figure class&equals;"wp-block-image size-large"><img src&equals;"https&colon;&sol;&sol;www&period;codebee&period;co&period;th&sol;labs&sol;wp-content&sol;uploads&sol;2020&sol;10&sol;ความต่างระหว่าง-LEFT-RIGHT-INNER-OUTER-JOIN-3-940x180&period;png" alt&equals;"" class&equals;"wp-image-5593" data-full&equals;"https&colon;&sol;&sol;codebee&period;co&period;th&sol;labs&sol;wp-content&sol;uploads&sol;2020&sol;10&sol;ความต่างระหว่าง-LEFT-RIGHT-INNER-OUTER-JOIN-3&period;png" data-full-size&equals;"1272x244" &sol;><&sol;figure>&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"wp-block-paragraph"><em>คำสั่ง MySQL LEFT JOIN สำหรับทดสอบ Query<&sol;em><&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<pre class&equals;"wp-block-code"><code>SELECT &ast; FROM companies LEFT JOIN suppliers ON &lpar;companies&period;company&lowbar;id &equals; suppliers&period;supplier&lowbar;id&rpar;<&sol;code><&sol;pre>&NewLine;&NewLine;&NewLine;&NewLine;<div style&equals;"height&colon;50px" aria-hidden&equals;"true" class&equals;"wp-block-spacer"><&sol;div>&NewLine;&NewLine;&NewLine;&NewLine;<ul class&equals;"wp-block-list"><li><strong>RIGHT JOIN<&sol;strong> คือ การรวมข้อมูลของตารางฐานข้อมูล ตั้งแต่ 2 ตารางขึ้นไป โดยให้ความสำคัญกับตารางทางฝั่งขวา <&sol;li><&sol;ul>&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"wp-block-paragraph">ความหมายคือ เรียกข้อมูลตารางทางขวามาทั้งหมดเมื่อเข้าเงื่อนไข ส่วนตารางทางฝั่งซ้าย ถ้าไม่มีข้อมูลจะแสดงเป็น NULL ตัวอย่างตามภาพด้านล่าง ข้อมูลตาราง RIGHT มาทั้งหมด แต่ข้อมูลตาราง LEFT มี 1 Row ที่เป็นค่า NULL เพราะไม่ตรงตามเงื่อนไข <em>&lpar;companies&period;company&lowbar;id &equals; suppliers&period;supplier&lowbar;id&rpar;<&sol;em><&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<figure class&equals;"wp-block-image size-large"><img src&equals;"https&colon;&sol;&sol;www&period;codebee&period;co&period;th&sol;labs&sol;wp-content&sol;uploads&sol;2020&sol;10&sol;ความต่างระหว่าง-LEFT-RIGHT-INNER-OUTER-JOIN-4-940x171&period;png" alt&equals;"" class&equals;"wp-image-5594" data-full&equals;"https&colon;&sol;&sol;codebee&period;co&period;th&sol;labs&sol;wp-content&sol;uploads&sol;2020&sol;10&sol;ความต่างระหว่าง-LEFT-RIGHT-INNER-OUTER-JOIN-4&period;png" data-full-size&equals;"1284x234" &sol;><&sol;figure>&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"wp-block-paragraph"><em>คำสั่ง MySQL RIGHT สำหรับทดสอบ Query<&sol;em><&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<pre class&equals;"wp-block-code"><code>SELECT &ast; FROM companies RIGHT JOIN suppliers ON &lpar;companies&period;company&lowbar;id &equals; suppliers&period;supplier&lowbar;id&rpar;<&sol;code><&sol;pre>&NewLine;&NewLine;&NewLine;&NewLine;<div style&equals;"height&colon;50px" aria-hidden&equals;"true" class&equals;"wp-block-spacer"><&sol;div>&NewLine;&NewLine;&NewLine;&NewLine;<ul class&equals;"wp-block-list"><li><strong>INNER JOIN<&sol;strong> คือ การรวมข้อมูลของตารางฐานข้อมูล ตั้งแต่ 2 ตารางขึ้นไป โดยให้ความสำคัญกับเงื่อนไขภายใน ON <&sol;li><&sol;ul>&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"wp-block-paragraph">ความหมายคือจะต้องตรงตามเงื่อนไขเท่านั้นถึงจะนำข้อมูลนั้นมาแสดง ตัวอย่างตามภาพด้านล่าง จะเห็นได้ว่าข้อมูลที่ได้มา จะต้องมี company&lowbar;id และ supplier&lowbar;id ที่ตรงกันเท่านั้น<&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<figure class&equals;"wp-block-image size-large"><img src&equals;"https&colon;&sol;&sol;www&period;codebee&period;co&period;th&sol;labs&sol;wp-content&sol;uploads&sol;2020&sol;10&sol;ความต่างระหว่าง-LEFT-RIGHT-INNER-OUTER-JOIN-5-940x153&period;png" alt&equals;"" class&equals;"wp-image-5596" data-full&equals;"https&colon;&sol;&sol;codebee&period;co&period;th&sol;labs&sol;wp-content&sol;uploads&sol;2020&sol;10&sol;ความต่างระหว่าง-LEFT-RIGHT-INNER-OUTER-JOIN-5&period;png" data-full-size&equals;"1288x210" &sol;><&sol;figure>&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"wp-block-paragraph"><em>คำสั่ง MySQL INNER JOIN สำหรับทดสอบ Query<&sol;em><&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<pre class&equals;"wp-block-code"><code>SELECT &ast; FROM companies INNER JOIN suppliers ON &lpar;companies&period;company&lowbar;id &equals; suppliers&period;supplier&lowbar;id&rpar;<&sol;code><&sol;pre>&NewLine;&NewLine;&NewLine;&NewLine;<div style&equals;"height&colon;50px" aria-hidden&equals;"true" class&equals;"wp-block-spacer"><&sol;div>&NewLine;&NewLine;&NewLine;&NewLine;<ul class&equals;"wp-block-list"><li><strong>OUTER JOIN<&sol;strong> ใน MySQL จะไม่มีคำสั่ง OUTER JOIN หรือ FULL OUTER JOIN โดยตรง แต่จะเป็นการใช้ร่วมกับคำสั่ง UNION เพื่อให้ได้ผลลัพธ์เดียวกันกับ FULL OUTER JOIN ในภาษา SQL อื่น ๆ <&sol;li><&sol;ul>&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"wp-block-paragraph">ผลลัพธ์ที่ได้ คือ จะเป็นการรวมข้อมูลตารางเข้าด้วยกัน แต่แยก column ชัดเจน &lpar; ซึ่งจะแตกต่างจากคำสั่ง UNION ที่จะเป็นการรวมทั้งตารางและ column เข้าด้วยกัน &rpar;<&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<figure class&equals;"wp-block-image size-large"><img src&equals;"https&colon;&sol;&sol;www&period;codebee&period;co&period;th&sol;labs&sol;wp-content&sol;uploads&sol;2020&sol;10&sol;ความต่างระหว่าง-LEFT-RIGHT-INNER-OUTER-JOIN-6-940x143&period;png" alt&equals;"" class&equals;"wp-image-5597" data-full&equals;"https&colon;&sol;&sol;codebee&period;co&period;th&sol;labs&sol;wp-content&sol;uploads&sol;2020&sol;10&sol;ความต่างระหว่าง-LEFT-RIGHT-INNER-OUTER-JOIN-6&period;png" data-full-size&equals;"2022x308" &sol;><&sol;figure>&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"wp-block-paragraph">คำสั่ง MySQL OUTER JOIN สำหรับทดสอบ Query<&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<pre class&equals;"wp-block-code"><code>SELECT &ast; FROM companies AS a LEFT OUTER JOIN suppliers AS b ON &lpar;a&period;company&lowbar;id &equals; b&period;supplier&lowbar;id&rpar; UNION SELECT &ast; FROM companies AS a RIGHT OUTER JOIN suppliers AS b ON &lpar;a&period;company&lowbar;id &equals; b&period;supplier&lowbar;id&rpar;<&sol;code><&sol;pre>&NewLine;&NewLine;&NewLine;&NewLine;<div style&equals;"height&colon;20px" aria-hidden&equals;"true" class&equals;"wp-block-spacer"><&sol;div>&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"wp-block-paragraph">เสริมท้ายบทความ อีกนิดหนึ่งครับ ในภาษา MySQL นั้น คำสั่ง LEFT JOIN กับ คำสั่ง LEFT OUTER JOIN จะให้ผลลัพธ์ของข้อมูล ไม่แตกต่างกันเลย เช่นเดียวกันกับคำสั่ง RIGHT JOIN และ RIGHT OUTER JOIN<&sol;p>&NewLine;

Exit mobile version