我无法在一个查询中从两个表中删除数据。 我发现了几个类似的线程,但是没有一个与我有相同的核心问题。
那么,为什么有这个不同呢?
目标:我需要有关如何从我的project
数据库中删除所有项目数据以及最终最终附加的所有小时的帮助放在hours
数据库中。
使用我当前的查询,只有在project
和hours
数据库中都找到匹配项时,它才会删除。那么如何才能按照上面的要求删除所有数据呢?
现在我的查询如下:
DELETE hours, projects
FROM hours
INNER JOIN projects
WHERE hours.projecthours_id= projects.project_id and hours.projecthours_id = ".$mysqli->real_escape_string($_GET['id']).";
这是我的两个表(示例数据和表):
#hours
---------------------------------------
hours_id projecthours_id amount_hours
1 12 15
2 8 4
3 9 2
4 15 11
#projects
---------------------------------------
project_id project_name
1 project 1
2 project 2
3 project 3
4 project 4
答案 0 :(得分:1)
尝试使用左外部联接而不是内部联接,然后where
转到on
。
尝试一下
DELETE hours, projects
FROM hours
LEFT OUTER JOIN projects on hours.projecthours_id= projects.project_id
WHERE hours.projecthours_id = ".$mysqli->real_escape_string($_GET['id']).";
答案 1 :(得分:1)
Left Join
代替Inner Join
。where
表中删除所有内容,因此您的projects.project_id
条件应该在hours.projecthours_id
而不是projects
上。尝试:
DELETE hours, projects
FROM hours
LEFT JOIN projects ON projects.project_id = hours.projecthours_id
WHERE projects.project_id = ".$mysqli->real_escape_string($_GET['id']).";
答案 2 :(得分:0)
无法通过一个查询来工作。 因此,将它们改为两个单独的。
$query = "DELETE FROM hours WHERE hours.projecthours_id = ".$mysqli->real_escape_string($_GET['id'])."";
$mysqli->query($query);
$query = "DELETE FROM projects WHERE projects.project_id = ".$mysqli->real_escape_string($_GET['id'])."";