ความสัมพันธ์สองทางกับตารางเดียวใน PHP

สมมติว่าเรามีเมืองต่าง ๆ:

cities
id name
1 city1
2 city2
3 city3

สมมติว่าเรามีเส้นทางระหว่างเมืองต่าง ๆ, โดยที่แต่ละเส้นทางมีเมืองเริ่มต้น และเมืองปลายทาง:

routes
id name from_city_id to_city_id
1 route1 1 2
2 route2 2 3

สมมติว่าเราต้องการเส้นทางพร้อมกับ เมือง ความซับซ้อนอยู่ที่ว่า แต่ละเส้นทางมีสองเมือง: เริ่มต้น และปลายทาง

กลายเป็นว่าตารางเมืองจำเป็นต้อง join สองครั้ง ในแต่ละครั้งที่ join ตาราง จะต้องถูกเปลี่ยนชื่อ:

sqlSELECT
  from_cities.name as from_city_name,
  to_cities.name as to_city_name
FROM
  routes
LEFT JOIN cities as from_cities
  ON from_cities.id=routes.from_city_id
LEFT JOIN cities as to_cities
  ON to_cities.id=routes.to_city_id
Задание 1

สมมติว่าเรามีผู้ใช้ ผู้ใช้แต่ละคนมี พ่อและแม่ อธิบายโครงสร้างการจัดเก็บ