dans mon schéma MySQL, j'ai la table category(id, parentid, name)
Dans la MSSQL, j'ai cette requête CTE (pour construire une arborescence de catégories de bas en haut pour un ID de catégorie fourni:
with CTE (id, pid, name)
as
(
select id, parentid as pid,name
from category
where id = 197
union all
select CTE.pid as id , category.parentid as pid, category.name
from CTE
inner join category
on category.id = CTE.pid
)
select * from CTE
Comment "transformer" cette requête en MySQL?
Malheureusement, MySQL ne prend pas en charge CTE (Common Table Expressions). C'est un retard de longue date, OMI. Souvent, vous pouvez simplement utiliser une sous-requête à la place, mais ce CTE particulier est récursif : il se réfère à lui-même dans la requête. Les CTE récursifs sont extrêmement utiles pour les données hiérarchiques, mais encore une fois: MySql ne les prend pas en charge du tout. Vous devez implémenter une procédure stockée pour obtenir les mêmes résultats.
Une de mes réponses précédentes devrait constituer un bon point de départ:
Heureusement, ce n'est plus nécessaire, car MySQL à partir de 8.0.1supporte CTE .
malheureusement, MYSQl ou XAMPP (MARIADB), mysql ne prend pas en charge les CTE (COMMON TABLE EXPRESSIONS), Pour les mêmes, vous devrez utiliser des requêtes imbriquées.
pour plus d'informations, cliquez sur le lien ci-dessous: -