Heim >Datenbank >MySQL-Tutorial >Wie lösche ich Beiträge, die sich auf einen bestimmten Client beziehen, mithilfe von MySQL-Joins?
Löschen von Beiträgen, die einem bestimmten Client in MySQL zugeordnet sind
Problem:
Unsere Datenbank enthält drei Tabellen: clients
, projects
und posts
. Ziel ist es, alle mit einem bestimmten Kunden verknüpften Beiträge zu entfernen. Die folgende SQL-Anweisung ist wirkungslos:
<code class="language-sql">DELETE FROM posts INNER JOIN projects ON projects.project_id = posts.project_id WHERE projects.client_id = :client_id;</code>
Der posts
-Tabelle fehlt ein direkter client_id
-Fremdschlüssel; es besitzt nur einen project_id
Fremdschlüssel.
Lösung:
Um Beiträge zu entfernen, die mit Projekten eines bestimmten Kunden verbunden sind, muss die DELETE
-Anweisung explizit auf die posts
-Tabelle abzielen. Die korrigierte Abfrage lautet:
<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>
Alternative Lösung:
Eine effizientere Methode besteht darin, eine ON DELETE CASCADE
-Einschränkung zu implementieren, wenn die Fremdschlüsselbeziehung zwischen den Tabellen projects
und posts
eingerichtet wird. Dadurch werden Beiträge automatisch gelöscht, wenn das zugehörige Projekt gelöscht wird. Die überarbeitete SQL-Abfrage lautet:
<code class="language-sql">DELETE FROM projects WHERE client_id = :client_id;</code>
Dieser Ansatz nutzt die ON DELETE CASCADE
-Einschränkung, um alle zugehörigen Beiträge gleichzeitig zu entfernen.
Das obige ist der detaillierte Inhalt vonWie lösche ich Beiträge, die sich auf einen bestimmten Client beziehen, mithilfe von MySQL-Joins?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!