ความสัมพันธ์แบบพาเรนต์ที่มีลูกหลายคนใน PHP
ในบทเรียนก่อนหน้า พ่อสามารถมีลูกได้เพียงคนเดียวเท่านั้น สิ่งนี้เกิดขึ้นได้เพราะพ่อมีความสัมพันธ์ผ่านฟิลด์ son_id
สมมติว่าตอนนี้พ่อสามารถมีลูกได้หลายคน ในกรณีนี้ เรายังสามารถสร้างตารางเพียงตารางเดียวที่เชื่อมโยงกับตัวเองได้ เราเพียงแค่เก็บข้อมูลในฟิลด์ความสัมพันธ์ไม่ใช่ id ของลูก แต่เป็น id ของพ่อ ด้วยวิธีนี้ ยูเซอร์หลายคนจะสามารถอ้างอิงถึงพ่อของพวกเขาได้ — และนั่นทำให้พ่อมีลูกได้หลายคน:
| id | name | father_id |
|---|---|---|
| 1 | user1 | 3 |
| 2 | user2 | 3 |
| 3 | user3 | 4 |
| 4 | user4 | null |
สามารถดึงข้อมูลยูเซอร์พร้อมกับพ่อของเขาได้ดังนี้:
SELECT
users.name as user_name,
fathers.name as father_name
FROM
users
LEFT JOIN users as fathers ON fathers.id=users.father_id
สมมติว่าเรามียูเซอร์ ยูเซอร์แต่ละคนมีพ่อและแม่ อธิบายโครงสร้างการจัดเก็บข้อมูล
เขียนคำสั่ง query เพื่อดึงข้อมูลยูเซอร์พร้อมกับพ่อและแม่ของเขา