Maison >base de données >tutoriel mysql >Comment supprimer les publications liées à un client spécifique à l'aide des jointures MySQL ?
Suppression de publications associées à un client spécifique dans MySQL
Problème :
Notre base de données contient trois tables : clients
, projects
et posts
. Le but est de supprimer toutes les publications liées à un client particulier. L'instruction SQL suivante est inefficace :
<code class="language-sql">DELETE FROM posts INNER JOIN projects ON projects.project_id = posts.project_id WHERE projects.client_id = :client_id;</code>
La table posts
n'a pas de clé étrangère client_id
directe ; il ne possède qu'une project_id
clé étrangère.
Solution :
Pour éliminer les publications liées à des projets appartenant à un client spécifique, l'instruction DELETE
doit cibler explicitement la table posts
. La requête corrigée est :
<code class="language-sql">DELETE posts FROM posts INNER JOIN projects ON projects.project_id = posts.project_id WHERE projects.client_id = :client_id;</code>
Solution alternative :
Une méthode plus efficace consiste à implémenter une contrainte ON DELETE CASCADE
lors de l'établissement de la relation de clé étrangère entre les tables projects
et posts
. Cela supprime automatiquement les publications lorsque leur projet associé est supprimé. La requête SQL révisée devient :
<code class="language-sql">DELETE FROM projects WHERE client_id = :client_id;</code>
Cette approche exploite la contrainte ON DELETE CASCADE
pour supprimer simultanément toutes les publications associées.
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!