Requête en cascade

Résolu
cerco25 Messages postés 9 Statut Membre -  
cerco25 Messages postés 9 Statut Membre -
Bonjour,

J'ai un système de commentaire sur plusieurs étages, à chaque fois que j'ajoute un sous commentaire, il prendra comme valeur dans le champ parent_id, l'id du commentaire parent.
Je voudrais faire une requête pour gérer la suppression de commentaires en cascade sur une même table.

Ma table :

http://www.hostingpics.net/viewer.php?id=347873cascade.png

Par exemple, pour la gestion du troisième commentaire avec des sous-commentaire,
sous sous commentaire et sous sous sous commentaire lier :

Si je supprime le commentaire 3 (com_id = 3), supprimer les commentaires : 3-4-5-6-7-8-9-10

Si je supprime le commentaire 7 (com_id = 7), supprimer les commentaires : 7-9 et 10

ou si je supprime le commentaire 9 (com_id =9), de supprimer les commentaires : 9-10.

J'ai essayé de faire une requête avec une sous-requête ? mais je n'arrive pas à obtenir le résultat voulu.

Merci

2 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    Le plus simple, je pense, est de définir la contrainte entre les commentaires et leur parent par
    FOREIGN KEY
    avec
    ON DELETE CASCADE
    , et de laisser MySQL automatiquement propager les suppressions des parents vers les enfants.
    Quelques explications ici:
    https://openclassrooms.com/fr/courses/1959476-administrez-vos-bases-de-donnees-avec-mysql/1965264-options-des-cles-etrangeres
    1
    1. cerco25 Messages postés 9 Statut Membre
       
      Salut, Merci, je viens de tester ça marche super bien.
      0
  2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonsoir, pourquoi supprimer le 4 et le 5 quand tu supprimes le 3?
    fais-tu cela en php, es-tu prêt à coder ta logique de suppression en php?
    0
    1. cerco25 Messages postés 9 Statut Membre
       
      Effectivement, désoler, petite erreur.
      0