1

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

4

2 回答 2

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

于 2012-12-20T17:33:48.103 回答
0

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

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

于 2012-12-20T17:33:48.333 回答