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