Je cherche le moyen le plus simple d'obtenir récursivement tous les éléments parents d'une base de données en utilisant la liste d'adjacence / le modèle d'héritage à table unique ( id, parent_id
).
Ma sélection ressemble actuellement à ceci :
$sql = "SELECT
e.id,
TIME_FORMAT(e.start_time, '%H:%i') AS start_time,
$title AS title,
$description AS description,
$type AS type,
$place_name AS place_name,
p.parent_id AS place_parent_id,
p.city AS place_city,
p.country AS place_country
FROM event AS e
LEFT JOIN place AS p ON p.id = e.place_id
LEFT JOIN event_type AS et ON et.id = e.event_type_id
WHERE e.day_id = '$day_id'
AND e.private_flag = 0
ORDER BY start_time";
Chaque event
est lié à un place
et chaque place
peut être l'enfant d'un autre place
(jusqu'à environ 5 niveaux de profondeur)
Est-ce possible dans une seule sélection avec mysql ?
Pour l'instant, je pense qu'il pourrait s'agir d'une fonction distincte qui bouclerait les données retournées. $events
en ajoutant place_parent_X
éléments comme il va, mais je ne suis pas sûr de savoir comment mettre cela en œuvre.