php - SQL 删除与连接

标签 php mysql codeigniter join

为什么以下查询不起作用?在 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_2table_4rela 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/

相关文章:

php - 自动选中多个复选框

mysql - Doctrine 2 : is multiple level STI possible?

CODEIGNITER:在Controller中创建库实例,从 View 访问

php - Symfony2 捆绑系统

php - 没有这样的项目 : hxigniter

php - 使用正则表达式捕获多种格式的日期

mysql - SQL 仅选择列上具有最大值的行

java - 无法创建与数据库服务器的连接。尝试重新连接 3 次。放弃

php - 使用带有 codeigniter 的下拉菜单更新数据库中的列

php - 如何在 codeigniter 中更新表而不重复