/ / изтриване от 3 таблици с една заявка - sql, inner-join, sql-delete

изтрийте от 3 таблици с една заявка - sql, internal-join, sql-delete

аз имам 3 маси и аз не искам да определя някакъв чуждестранен ключ в таблиците ми. структурата ми на таблиците е както по-долу: таблица диаграма

Написах тази заявка:

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

тази заявка работи за мен, освен ако една от таблиците няма записи. сега как мога да направя това изтриване в 3 таблици в 1 заявка?

Отговори:

0 за отговор № 1

Ако това се случи, ако всички таблици имат записи, опитайте да използвате LEFT JOIN instread на INNER JOIN. Също така, имахте някаква бъркотия с условията на Вашите връзки. Опитайте по следния начин:

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 = ?

Също така, клавишите foregin са хубаво нещо и не се използватте обикновено са лоши идеи. Да, отначало изглеждат досадни, но се опитайте да се фокусирате върху това, КОИ те ви дразнят. Повечето пъти го правят, когато се намесвате с данни по начин, който не бива да се случва и без тях Вие ще причините инконтиненция на данните във Вашия ПБ.

Но това е само моето мнение.