J'ai une table qui contient des données sur le noeud visité. Il est possible qu'un noeud puisse être visité plusieurs fois. Pour cela, j'ai une autre table qui contient les données du noeud visité, du noeud visité avant et du noeud visité après. Je voudrais maintenant reconstruire le chemin dans l'ordre de visite en utilisant MySQL. Je n'arrive pas à comprendre comment faire une requête pour cela, alors je demande de l'aide.Reconstruction de chemin de noeud SQL
Exemple
Disons que quelqu'un a visité ces noeuds dans cet ordre:
4->5->6->7->4->6->10->12->7->15
Les tables ressemble à ceci:
Visites
+---------+-------------------------------+----------+------------+
| id | user | node | view_count |
+---------+-------------------------------+----------+------------+
| 1 | l3lie1frl77j135b3fehbjrli5 | 4 | 2 |
+---------+-------------------------------+----------+------------+
| 2 | l3lie1frl77j135b3fehbjrli5 | 5 | 1 |
+---------+-------------------------------+----------+------------+
| 3 | l3lie1frl77j135b3fehbjrli5 | 6 | 2 |
+---------+-------------------------------+----------+------------+
| 4 | l3lie1frl77j135b3fehbjrli5 | 7 | 2 |
+---------+-------------------------------+----------+------------+
| 5 | l3lie1frl77j135b3fehbjrli5 | 10 | 1 |
+---------+-------------------------------+----------+------------+
| 6 | l3lie1frl77j135b3fehbjrli5 | 12 | 1 |
+---------+-------------------------------+----------+------------+
| 7 | l3lie1frl77j135b3fehbjrli5 | 15 | 1 |
+---------+-------------------------------+----------+------------+
Revisite
+---------+-------------------------------+-------+----------------+-----------------+
| id | user | node | after_visiting | before_visiting |
+---------+-------------------------------+-------+----------------+-----------------+
| 1 | l3lie1frl77j135b3fehbjrli5 | 4 | 7 | 6 |
+---------+-------------------------------+-------+----------------+-----------------+
| 2 | l3lie1frl77j135b3fehbjrli5 | 6 | 4 | 10 |
+---------+-------------------------------+-------+----------------+-----------------+
| 3 | l3lie1frl77j135b3fehbjrli5 | 7 | 12 | 15 |
+---------+-------------------------------+-------+----------------+-----------------+
Je voudrais construire une requête qui retourne le chemin sous la forme d'une chaîne ou d'une liste de nœuds comme ceci:
4,5,6,7,4,6,10,12,7,15
ou
+---------+--------+
| index | node |
+---------+--------+
| 1 | 4 |
+---------+--------+
| 2 | 5 |
+---------+--------+
| 3 | 6 |
+---------+--------+
| 4 | 7 |
+---------+--------+
| 5 | 4 |
+---------+--------+
| 6 | 6 |
+---------+--------+
| 7 | 10 |
+---------+--------+
| 8 | 12 |
+---------+--------+
| 9 | 7 |
+---------+--------+
| 10 | 15 |
+---------+--------+
Toute aide sera grandement appréciée.
et vous ne pouvez pas changer le design? il vaudrait mieux simplement stocker toutes les visites et visites passées dans la table 'visites' sans la colonne' view_count' ... – Aprillion
Seconding that. Il est beaucoup plus facile d'obtenir vos statistiques à partir d'un chemin brut, que l'inverse. –
+ dans ce design, si vous visitez 6> 4> 7 3 fois, vous ne pouvez pas les distinguer (les conditions de jointure vont tripler les reprises) – Aprillion