Php 删除记录和所有相关记录,即使没有相关记录
所以我有一个应用程序,用户可以在其中创建费用报告。每个报表都有许多收据,我需要能够让用户删除他们的报表和关联的收据。我现在有一个sql语句,它可以做到这一点,但它只在报表有收据的情况下工作,因此,如果没有收据,报表不会被删除: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
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,。也许触发器将是最好的。