我目前在網站上使用PHP和SQL。有一個包含用戶(帳戶),組織和關係表的數據庫,用於將組織與帳戶相關聯(多對多關係)這是構建此SQL查詢的正確方法嗎?
當我從數據庫中刪除一個帳戶時,SQL查詢還應該刪除任何組織如果要刪除的帳戶是與組織關聯的唯一帳戶,則該帳戶已關聯。
我對SQL比較陌生,並且已經構建了一個查詢,該查詢應該在上述條件下從組織表中刪除組織。 這裏是我的查詢:
'DELETE FROM TBL_ORGANISATIONS WHERE id = (
SELECT org_id FROM TBL_AFFILIATIONS WHERE account_email = :email AND (
SELECT COUNT(*) FROM TBL_AFFILIATIONS WHERE org_id IN (
SELECT org_id FROM TBL_AFFILIATIONS WHERE account_email = :email
)
) = 1
)'
這是正確的方式來構建這個查詢或者是有一個更清晰/更有效的方式來做到這一點?正如我前面提到的我是相當新的SQL,還沒有掌握所有的SQL關鍵字的概念,它可以在構造查詢,如下所示(JOIN等)
謝謝大家提前任何意見是有益的你可以提供。
順便說一句: 我使用PDO因此:電子郵件爲你想知道的那些。
感謝您的回覆。我至今沒有使用外鍵,因爲我一直使用MyISAM作爲表引擎,但按照您的建議,我已將引擎更改爲InnoDB並添加了外鍵,因爲它們看起來像是在兩個表之間創建關係的正確方法。現在正在使用外鍵,這似乎是一個很好的解決方案。謝謝 –