结合使用DELETE和INNER JOIN

时间:2018-08-22 18:44:12

标签: php sql

我希望能够从页面中删除公司及其所有用户。

所以我做了以下事情:

$removeid = $_POST['removeid'];

$deletecompany = "
DELETE c,u 
FROM company c 
INNER JOIN users u 
ON c.id = u.id_company 
WHERE c.id = ".$removeid."";
$deletecompanycon = $conn->query($deletecompany);

这仅在公司有用户的情况下有效,但是在只有公司且没有用户附加的情况下,查询仍会通过,但公司不会被删除。

即使没有用户,如何确保删除公司?

2 个答案:

答案 0 :(得分:1)

您可以将ON DELETE CASCADE选项添加到users中的外键约束中。然后,如果公司被DBMS删除,则该公司的所有用户都将被删除。

CREATE TABLE语句中看起来与此类似:

CREATE users
       (...
        FOREIGN KEY (id_company)
                    REFERENCES company
                               (id)
                    ON DELETE CASCADE,
        ...);

您必须查看如何将其准确添加到DBMS中的现有约束。这里的语法可能会有所不同。

答案 1 :(得分:0)

尝试使用LEFT JOIN

$deletecompany = "
DELETE c,u 
FROM company c 
LEFT JOIN users u 
ON c.id = u.id_company 
WHERE c.id = ".$removeid."";
$deletecompanycon = $conn->query($deletecompany);