I ont une table users
avec les colonnes suivantesLe moyen le plus efficace de trouver quelque chose de façon récursive dans une table?
id INT PRIMARY
username
target
dead
cible
contient un identifiant d'un autre utilisateur dans le même tableau. Tous les utilisateurs commencent avec dead comme 0. Si dead est 1, cela signifie qu'ils sont morts. Avec le temps, les morts peuvent changer, mais la colonne cible restera toujours avec ce qu'elle a commencé.
Si un utilisateur meurt, sa cible devient celle qui a tué sa nouvelle cible. Donc, si j'essaie de trouver la cible actuelle de l'utilisateur A, je devrais d'abord trouver leur cible d'origine, et si cette cible est morte, déplacez-vous sur la cible de cette cible, et ainsi de suite jusqu'à ce que j'en trouve une. et ce serait la cible actuelle de l'utilisateur A.
Actuellement, je cette requête qui me donne juste l'objectif initial
SELECT `a`.`username`, `a`.`dead`, `b`.`username`
FROM `users` AS `a` LEFT JOIN (`users` AS `b`)
ON (`a`.`target` = `b`.`id`)
Mais ne sais pas comment y ajouter pour me donner la cible actuelle.
Question intéressante - peut être difficile à faire dans mySQL seul. De quelle langue/plateforme faites-vous cela? –
PHP. Je sais que je peux juste ajouter une autre colonne 'current_target' et la mettre à jour chaque fois que quelqu'un meurt. Mais je veux savoir s'il est possible de ne pas utiliser une seule requête. – fent