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)
ภาพที่ 1.1 ตารางข้อมูลลูกค้า เเละ ตารางข้อมูลการสั่งสินค้า
ภาพที่ 1.1 ตารางข้อมูลลูกค้า เเละ ตารางข้อมูลการสั่งสินค้า
table_cusANDorder.jpg (149.88 KiB) Viewed 8066 times
>> ต้องการทราบรหัสลูกค้าที่ทำการสั่งซื้อสินค้าในรหัสการสั่งซื้อ 05

Code: Select all

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

Code: Select all

SELECT cus_id, cus_name
FROM customer
WHERE cus_id = 'c006';
ภาพที่ 1.3 จากการใช้คำสั่งจาก Code ข้างต้นจะเเสดงผลออกมาดังภาพ
ภาพที่ 1.3 จากการใช้คำสั่งจาก Code ข้างต้นจะเเสดงผลออกมาดังภาพ
output_select2.jpg (22.72 KiB) Viewed 8083 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 3347 times

By Jengpeng

Post Reply

Return to “SQL Knowledge”

Who is online

Users browsing this forum: No registered users and 24 guests