Récupérer une liste chaînée dans la base de données MySQL
Le stockage dans une base de données de listes chaînées pose des défis uniques. Contrairement à d'autres solutions SGBDR telles qu'Oracle ou Microsoft SQL Server, MySQL ne prend pas en charge les requêtes récursives nécessaires à la récupération directe des données de liste chaînée.
La solution à ce problème, semblable au stockage des structures arborescentes dans un SGBDR, consiste à extraire la liste chaînée de la base de données et son traitement côté client. Cependant, cela soulève la question de savoir s'il est possible de terminer la requête à une certaine profondeur ou en fonction des conditions de ligne.
Bien que MySQL ne dispose pas de fonctionnalités de requête récursive intégrées, il existe une solution de contournement quelque peu lourde :
<code class="sql">SELECT * FROM mytable t1 LEFT JOIN mytable t2 ON (t1.next_id = t2.id) LEFT JOIN mytable t3 ON (t2.next_id = t3.id) LEFT JOIN mytable t4 ON (t3.next_id = t4.id) LEFT JOIN mytable t5 ON (t4.next_id = t5.id) LEFT JOIN mytable t6 ON (t5.next_id = t6.id) LEFT JOIN mytable t7 ON (t6.next_id = t7.id) LEFT JOIN mytable t8 ON (t7.next_id = t8.id) LEFT JOIN mytable t9 ON (t8.next_id = t9.id) LEFT JOIN mytable t10 ON (t9.next_id = t10.id);</code>
Les limitations de cette requête sont ses performances lentes et le retour de tous les résultats sur une seule ligne. Cependant, il fournit un moyen de récupérer les données d'une liste chaînée par incréments limités en profondeur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!