Php 删除记录和所有相关记录,即使没有相关记录

Php 删除记录和所有相关记录,即使没有相关记录,php,mysql,Php,Mysql,所以我有一个应用程序,用户可以在其中创建费用报告。每个报表都有许多收据,我需要能够让用户删除他们的报表和关联的收据。我现在有一个sql语句,它可以做到这一点,但它只在报表有收据的情况下工作,因此,如果没有收据,报表不会被删除: mysql_query("DELETE expense_general, expense_receipts FROM expense_general JOIN expense_receipts ON expense_general.id = expense_rec

所以我有一个应用程序,用户可以在其中创建费用报告。每个报表都有许多收据,我需要能够让用户删除他们的报表和关联的收据。我现在有一个sql语句,它可以做到这一点,但它只在报表有收据的情况下工作,因此,如果没有收据,报表不会被删除:

    mysql_query("DELETE expense_general, expense_receipts FROM expense_general JOIN expense_receipts ON expense_general.id = expense_receipts.expense_general_id WHERE expense_general.id = {$expenseID}");

$expenseID是报表记录ID号。因此,我是否得到删除没有收据的报告的语句?

使用
左连接查询,即

DELETE expense_general, expense_receipts 
FROM expense_general 
LEFT JOIN expense_receipts ON expense_general.id = expense_receipts.expense_general_id 
WHERE expense_general.id = {$expenseID}

这将在
费用_常规
表上匹配,无论
费用_收据
表中是否有任何链接。

使用
左联接
查询,即

DELETE expense_general, expense_receipts 
FROM expense_general 
LEFT JOIN expense_receipts ON expense_general.id = expense_receipts.expense_general_id 
WHERE expense_general.id = {$expenseID}
这将在
费用_常规
表上匹配,无论
费用_收据
表中是否有任何链接。

您需要在表之间定义“外键关系”。明细表
expense\u receives
将与
expense\u general
具有外键关系,当您从
expense\u general
中删除行时,相应的明细行也将被删除

在谷歌上搜索“mysql外键”应该会让您有很多教程可供选择。

您需要在表之间定义“外键关系”。明细表
expense\u receives
将与
expense\u general
具有外键关系,当您从
expense\u general
中删除行时,相应的明细行也将被删除


在谷歌上搜索“mysql外键”应该会让你有很多教程可供选择。

。它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果您选择PDO,。也许触发器将是最好的。。它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果您选择PDO,。也许触发器将是最好的。