/ / delete aus 3 Tabellen mit einer Abfrage - SQL, Inner-Join, SQL-Löschen

Löschen Sie aus 3 Tabellen mit einer Abfrage - sql, inner-join, sql-delete

Ich habe 3 Tabellen und möchte keinen Fremdschlüssel in meinen Tabellen definieren. Meine Tabellenstruktur ist wie folgt: Tabellen-Diagramm

Ich habe diese Abfrage geschrieben:

delete relativedata, crawls, stored
from relativedata inner join
crawls
on relativedata.crawl_id = crawls.id and
relativedata.id = ? inner join
stored
on stored.crawl_id = crawls.id

Diese Abfrage funktioniert für mich, es sei denn, eine der Tabellen enthält keine Datensätze. Wie kann ich dies nun in 3 Tabellen in 1 Abfrage löschen?

Antworten:

0 für die Antwort № 1

Wenn es funktioniert, wenn alle Tabellen über Datensätze verfügen, versuchen Sie es mit LEFT JOIN, um INNER JOIN zu lesen. Sie hatten auch einige Probleme mit Ihren ON-Bedingungen. Versuchen Sie es so:

delete
relativedata, crawls, stored
from
relativedata
LEFT join crawls on relativedata.crawl_id = crawls.id
LEFT join stored on relativedata.crawl_id = stored.crawl_id
WHERE
relativedata.id = ?

Auch vergessene Schlüssel sind eine gute Sache und nicht zu verwendenSie sind im Allgemeinen eine schlechte Idee. Ja, sie scheinen anfangs nervig zu sein, aber versuchen Sie sich darauf zu konzentrieren, WENN sie Sie nerven. Meistens tun sie es, wenn Sie sich mit Daten auf eine Weise einmischen, die Sie nicht tun sollten, und ohne sie würden Sie Dateninkongruenz in Ihrer Datenbank verursachen.

Aber es ist nur meine Meinung.