< Browse > Home / Programming / Blog article: การ LEFT JOIN 3 table ใน MySQL

| Mobile | RSS

การ LEFT JOIN 3 table ใน MySQL

มีนาคม 14th, 2009 | No Comments | Posted in Programming
Post Page Rank

สำหรับบางคน แค่การ LEFT JOIN 2 ตารางก็ยากพอแล้ว ใช้วิธี Query ออกมา หลายๆรอบดีกว่า ซึ่งมันก็ง่ายดีนะครับ แต่ผมว่า มันไม่เทพ!! ฮ่าๆๆ พอดีวันนี้เราจะเป็นเทพกันนะครับ มาเริ่มกันเลยดีกว่า

ถ้าหากผมมีตารางในฐานข้อมูล 3 ตาราง ประกอบด้วยตาราง ภาค (zone), จังหวัด (province), อำเภอ (district) นะครับ

อำเภอ (district)

district_id

province_id

district_name

1

3

เมืองเชียงใหม่

2

3

สารภี

3

3

ดอยสะเก็ด

4

4

สันกำแพง

5

4

ดอยหล่อ

จังหวัด (province)

province_id

zone_id

province_name

1

2

เมืองเชียงใหม่

2

2

สารภี

3

2

ดอยสะเก็ด

4

2

สันกำแพง

5

2

ดอยหล่อ

ภาค (zone)

zone_id

zone_name

1

กลาง

2

เหนือ

3

ใต้

4

ตะวันออก

5

ตะวันตก

ความต้องการคือ แสดงผลอำเภอ โดยให้แสดงจังหวัด และภาคด้วย ซึ่งจากการวิเคราะห์ออกมา จะเห็นว่า ข้อมูลที่ต้องแสดงมี 3 อย่าง แต่ละอย่างอยู่คนละตาราง ส่วนข้อมูลที่ต้องการคือ อำเภอ ดั้งนั้นจะเขียน SQL Statement ได้ดังนี้

SELECT district.district_name, province.province_name, zone.zone_name FROM district LEFT JOIN province ON province.province_id = district.province_id LEFT JOIN zone ON province.zone_id = zone.zone_id WHERE district.district_name = ‘ชื่ออำเภอที่ต้องการ’

ดูๆแล้วไม่ยากเลยนะครับ แต่ผมคิดว่า หากเลี่ยงการ JOIN ตารางต่างๆได้ ก็ควรเลี่ยงนะครับ เพราะว่าถ้าหากมีข้อมูลใน record เยอะๆ มันกิน process เยอะมาก และใช้เวลาในการประมวลผลนานครับ ถ้าจะให้ดีควรใช้ SQL Statement แบบนี้ดีกว่า

SELECT district.district_name,province.province_name,zone.zone_name FROM district,province,zone WHERE (province.province_id = district.province_id) AND (province.zone_id = zone.zone_id) AND (district.district_name = ‘ชื่ออำเภอที่ต้องการ’);


Leave a Reply 2385 views, 3 so far today |
Tags: , , ,

Leave a Reply