Il arrive parfois qu’on est besoin des faire des suppressions de lignes sur plusieurs tables en même temps. Par exemple, on veut supprimer une catégorie et tous les articles qui appartiennent à cette catégorie. La catégorie appartient à la table catégorie et les articles à la table article et ils sont reliés par l’identifiant de la catégorie (id_cat pour la table categorie et fk_cat pour la table billet - fk pour foreign key)
Deux cas de figure : on veut supprimer sur les 2 tables d’un coup ou on veut supprimer qu’une sur une seule table.
DELETE sur 2 tables MySQL
Pour reprendre mon exemple de catégorie et d’articles, cela revient à supprimer la catégorie et les articles liés à cette catégorie.
La requête devra alors ressembler à ça :
Script sqlDELETE categorie, article FROM categorie, article WHERE id_cat=fk_cat AND fk_cat=1
DELETE sur une table MySQL nécessitant une jointure
Imaginons que vous voulez supprimer tous les articles de la catégorie 1 qui ont pour tag ‘prout’ (je sais…) et supprimer aussi le tag (même si c’est pas très logique car des articles d’une autre catégorie peuvent être à ce tag…. mais bon c’est un exemple, on va commencer à se faire chier avec ce genre de considération…).
On obtiendrait alors une requête de ce style :
Script sqlDELETE FROM tag, article USING tag, article,categorie WHERE id_cat=fk_cat AND fk_cat=1 AND tag=‘prout’
Et voilà, finis les 3 requêtes delete de suite dans nos gestions de contenus de vos sites