การ LEFT JOIN 3 table ใน MySQL
![]() |
Post Page Rank |
สำหรับบางคน แค่การ LEFT JOIN 2 ตารางก็ยากพอแล้ว ใช้วิธี Query ออกมา หลายๆรอบดีกว่า ซึ่งมันก็ง่ายดีนะครับ แต่ผมว่า มันไม่เทพ!! ฮ่าๆๆ พอดีวันนี้เราจะเป็นเทพกันนะครับ มาเริ่มกันเลยดีกว่า
ถ้าหากผมมีตารางในฐานข้อมูล 3 ตาราง ประกอบด้วยตาราง ภาค (zone), จังหวัด (province), อำเภอ (district) นะครับ
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ความต้องการคือ แสดงผลอำเภอ โดยให้แสดงจังหวัด และภาคด้วย ซึ่งจากการวิเคราะห์ออกมา จะเห็นว่า ข้อมูลที่ต้องแสดงมี 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 = ‘ชื่ออำเภอที่ต้องการ’);

