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

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

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

M013
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 829
ลงทะเบียนเมื่อ: 22/04/2010 12:02 pm

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

โพสต์โดย M013 » 14/08/2013 6:45 pm

JOIN TABLE (การเชื่อมเทเบิล)
การใช้คำสั่ง 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) เปิดดู 6881 ครั้ง

>> ต้องการทราบรหัสลูกค้าที่ทำการสั่งซื้อสินค้าในรหัสการสั่งซื้อ 05

โค้ด: เลือกทั้งหมด

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

>> จากการแสดงผลข้างต้นต้องการหาชื่อลูกค้าที่มีรหัสดังกล่าว

โค้ด: เลือกทั้งหมด

SELECT cus_id, cus_name
FROM customer
WHERE cus_id = 'c006';
output_select2.jpg
ภาพที่ 1.3 จากการใช้คำสั่งจาก Code ข้างต้นจะเเสดงผลออกมาดังภาพ
output_select2.jpg (22.72 KiB) เปิดดู 6898 ครั้ง

*** จะเห็นว่าตัวอย่างข้างต้นเป็นการ SELECT ทีละตาราง เเละต้องทำการ SELECT ถึง 2 ครั้งกว่าจะได้ข้อมูลที่ต้องการ ดังนั้นการ Join Table สามารถลดขั้นตอนได้ดังนี้

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

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

โค้ด: เลือกทั้งหมด

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

โค้ด: เลือกทั้งหมด

SELECT cus_id, cus_name
FROM customer
WHERE cus_id = 'c006';

- เมื่อทำการ Join Table

โค้ด: เลือกทั้งหมด

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';
แก้ไขล่าสุดโดย iss.f เมื่อ 16/08/2013 6:09 pm, แก้ไขไปแล้ว 7 ครั้ง.

N_T

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

โพสต์โดย N_T » 16/08/2013 11:20 am

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

milekung

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

โพสต์โดย 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
โพสต์: 1
ลงทะเบียนเมื่อ: 02/02/2019 3:42 pm

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

โพสต์โดย n_posri » 02/02/2019 4:44 pm

สอบถามหน่อยครับ
หาอยากจะเชื่อมเทเบิล แต่ไม่ต้องการให้เพิ่มข้อมูลและตัวไหนไม่ตรงกันให้แสดงผลด้วครับต้องทำยังไง

AAAC.PNG
AAAC.PNG (36.54 KiB) เปิดดู 2162 ครั้ง



By Jengpeng


ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 2 และ บุคคลทั่วไป 0 ท่าน