即使没有关联记录,也要删除记录和所有相关记录

时间:2012-12-20 17:28:24

标签: php mysql

所以我有这个应用程序,用户创建费用报告。每个报告都有很多收据,我需要能够让用户使用相关的收据删除他们的报告。我现在有一个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号。所以我收到声明删除没有收据的报告?

2 个答案:

答案 0 :(得分:1)

使用LEFT JOIN查询,即

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_general表,无论expense_receipts表中是否有任何链接。

答案 1 :(得分:0)

您需要在表之间定义“外键关系”。详细信息表expense_receipts将与expense_general具有外键关系,当您从expense_general删除行时,相应的详细信息行也会被删除。

谷歌搜索“mysql外键”应该给你很多教程可供选择。