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

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

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

โพสต์ที่ยังไม่ได้อ่าน โดย M013 »

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 15204 times
>> ต้องการทราบรหัสลูกค้าที่ทำการสั่งซื้อสินค้าในรหัสการสั่งซื้อ 05

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

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 15221 times
>> จากการแสดงผลข้างต้นต้องการหาชื่อลูกค้าที่มีรหัสดังกล่าว

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

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

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

โพสต์ที่ยังไม่ได้อ่าน โดย milekung »

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 »

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

By Jengpeng
บุคคลทั่วไป

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

โพสต์ที่ยังไม่ได้อ่าน โดย บุคคลทั่วไป »

Join ตารางไม่ใช่การเพิ่มข้อมูล ใช้สองตารางหรอ model ตามปีวิธีออกแบบตารางดูแปลกๆ
ตอบกลับโพส
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

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

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 42