我目前在网站上使用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并添加了外键,因为它们看起来像是在两个表之间创建关系的正确方法。现在正在使用外键,这似乎是一个很好的解决方案。谢谢 –