为什么以下查询不起作用?在 SQL 中删除以下五个表行的最佳方法是什么?我该如何修复它?
//$id = $this->input->post('id');
$id = '65';
$this->db->query("
DELETE table_1, table_2, table_3, table_4, table_5
FROM table_1
JOIN table_2 ON table_1.id = table_2.rela
JOIN table_3 ON table_2.h_id = table_3.h_id
JOIN table_4 ON table_1.id = table_4.rela
JOIN table_5 ON table_2.h_id = table_5.h_id
WHERE table_1.id =".floor($id));
更新:
table_1.id => 该 ID 为 65
table_2.rela => 这有关系 65
table_2.h_id => 这有 h_id 11
table_3.h_id => 这有 h_id 11
table_4.rela => 这有关系 65
table_5.h_id => 这有 h_id 11
更新2:
在 table_1.id
一排有65
也是 table_2
和table_4
有 rela 65
( table_1.id = table_2.rela => 65 = 65, table_1.id = table_4.rela => 65 = 65
) 现在在 table_2
我们有一个列名 h_id,其编号为 11
并设置为 h_id
在其他表中[ table_3
, table_5
].
如何与那里的这种关系可以得到id
来自table_1
并删除其表中的其他行。
我的鬃毛是这样的:(有一个id
来自table_1
,我们可以删除其表中与其关系的其他行,下面是这种关系的示例)
table_1.id
=65
=>table_4.rela
=65
=>table_2.rela
=65
->table_2.h_id
=11
=>table_3.h_id
=11
=>table_5.h_id
=11
.
更新3:
谁可以帮助我解决我的问题,有一个人吗?我仍然没有得到问题的答案。
最佳答案
您必须一一删除表格中的行。
也可以定义表进行级联删除...如果这样做,您只需要删除一个表中的一行。其他表中的其他相关行将自动删除。
CREATE TABLE `tableName` (
`id` int(10) unsigned NOT NULL auto_increment,
`typeId` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `type` (`typeId`)
CONSTRAINT `myForeignKey` FOREIGN KEY (`typeId`)
REFERENCES `types` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
希望这有帮助
关于php - SQL 删除与连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7852589/