2016-01-03 66 views
3

我有3個表,我不想在我的表中定義任何外鍵。 我的表結構如下圖所示: tables diagram從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

'Delete'和'Select'不能以相同的方式工作。 – Rahul

+0

當所有表都有一些要連接的東西時,此查詢就可以工作。你什麼意思? – Mahdi

+0

我的意思是,你不能像你嘗試的方式一樣從表格中刪除選定的列。不知道你到底是什麼。建議一次通過文檔。 – Rahul

回答

0

如果它在所有表都有記錄的情況下工作,請嘗試使用INNER JOIN的LEFT JOIN instread。此外,你有一些混亂你的加入條件。試着這樣說:

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鍵是好事,而不是使用它們通常是壞主意。是的,他們起初似乎很煩人,但是試着專注於當他們煩你時。大多數情況下,當你以某種方式干預數據時,他們會這樣做。你不應該,沒有它們,你會導致你的數據庫中的數據不相稱。

但是,這只是我的意見。

+0

tnx bro。最佳答案: - D. – Mahdi

相關問題