SQL Query - JOIN TABLE (การเชื่อมเทเบิล) Query ข้อมูลจากหลายตาราง

SQL Knowledge ทั้ง sql มาตรฐาน หลักการออกแบบฐานข้อมูล ความสัมพันธ์ของ ตาราง Mysql , PGSQL, Oracle, MSSQL

Moderators: mindphp, ผู้ดูแลกระดาน

M013
PHP Super Hero Member
PHP Super Hero Member
Posts: 829
Joined: 22/04/2010 12:02 pm

SQL Query - JOIN TABLE (การเชื่อมเทเบิล) Query ข้อมูลจากหลายตาราง

Post by M013 » 14/08/2013 6:45 pm

JOIN TABLE (การเชื่อมเทเบิล) - Query ข้อมูลจากหลายตาราง
การใช้คำสั่ง SELECT ทั่วๆไปเป็นในการดึงข้อมูลข้อมูลจากตารางเดียว เเต่ในการปฏิบัติงานจริงเเล้ว อาจต้องมีการดึงข้อมูลจากหลายตาราง
โดยอาศัยคอลัมน์ที่ตรงกันของ 2 ตารางเป็นตัวเชื่อม (Foreign Key) วิธีการนี้เรียกว่า "Join Table" ซึ่งการ Join Table แบ่งออกได้เป็น 2 ประเภท ได้แก่
1. Inner Join ได้แก่ Equi, Self Join
2. Outer Join ได้แก่ Left Outer Join, Right Outer Join,

ตัวอย่างการใช้งาน (แบบยังไม่ Join Table)
table_cusANDorder.jpg
ภาพที่ 1.1 ตารางข้อมูลลูกค้า เเละ ตารางข้อมูลการสั่งสินค้า
table_cusANDorder.jpg (149.88 KiB) Viewed 8206 times
>> ต้องการทราบรหัสลูกค้าที่ทำการสั่งซื้อสินค้าในรหัสการสั่งซื้อ 05

Code: Select all

SELECT order_id, cus_id
FROM Order_product
WHERE order_id = '05';
output_select1.jpg
ภาพที่ 1.2 จากการใช้คำสั่งจาก Code ข้างต้นจะเเสดงผลออกมาดังภาพ
output_select1.jpg (21.22 KiB) Viewed 8223 times
>> จากการแสดงผลข้างต้นต้องการหาชื่อลูกค้าที่มีรหัสดังกล่าว

Code: Select all

SELECT cus_id, cus_name
FROM customer
WHERE cus_id = 'c006';
output_select2.jpg
ภาพที่ 1.3 จากการใช้คำสั่งจาก Code ข้างต้นจะเเสดงผลออกมาดังภาพ
output_select2.jpg (22.72 KiB) Viewed 8223 times
*** จะเห็นว่าตัวอย่างข้างต้นเป็นการ SELECT ทีละตาราง เเละต้องทำการ SELECT ถึง 2 ครั้งกว่าจะได้ข้อมูลที่ต้องการ ดังนั้นการ Join Table สามารถลดขั้นตอนได้ดังนี้

ตัวอย่างการใช้งาน
(แบบ Join Table)

- เปรียบเทียบ Code ที่ไม่ได้ทำการ Join Table

Code: Select all

SELECT order_id, cus_id
FROM Order_product
WHERE order_id = '05';

Code: Select all

SELECT cus_id, cus_name
FROM customer
WHERE cus_id = 'c006';
- เมื่อทำการ Join Table

Code: Select all

SELECT Order_product.order_id, Order_product.cus_id, Customer.cus_name
FROM Customer, Order_product
WHERE Customer.cus_id = Order_product.cus_id
AND order_id = '05';
Last edited by iss.f on 16/08/2013 6:09 pm, edited 7 times in total.

N_T

Re: JOIN TABLE (การเชื่อมเทเบิล)

Post by N_T » 16/08/2013 11:20 am

ขอบคุณสำหรับความรู้ครับ :like:

milekung

Re: JOIN TABLE (การเชื่อมเทเบิล)

Post by milekung » 02/02/2019 5:43 am

SELECT Order_product.order_id, Order_product.cus_id, Customer.cus_name
FROM Customer INNER JOIN Order_product ON
Customer.cus_id = Order_product.cus_id
WHERE order_id = '05';

อีก 1 รูปแบบที่สามารถเขียนได้ครัล

n_posri
PHP Newbie
PHP Newbie
Posts: 1
Joined: 02/02/2019 3:42 pm

Re: JOIN TABLE (การเชื่อมเทเบิล)

Post by n_posri » 02/02/2019 4:44 pm

สอบถามหน่อยครับ
หาอยากจะเชื่อมเทเบิล แต่ไม่ต้องการให้เพิ่มข้อมูลและตัวไหนไม่ตรงกันให้แสดงผลด้วครับต้องทำยังไง
AAAC.PNG
AAAC.PNG (36.54 KiB) Viewed 3487 times

By Jengpeng

Post Reply

Return to “SQL Knowledge”

Users browsing this forum: No registered users and 14 guests