2015-11-05 67 views
1

是否有可能用外键更新MySQL表(用DataTables显示)? 例如,我有两个表:需要帮助操纵来自DataTable的数据从MySQL数据

`table1`(`id`, `type`, `description`); 
`table2`(`id`, `name`); 

比方说,表中含有:

[1, 1, 'description 1'] 

[1, 'type 1'], 
[2, 'type 2'] 

table1type字段是表2的id字段的整数外键。我可以运行一个选择查询:

SELECT `table1`.`id`, `table2`.`name`, `table1`.`description` 
FROM `table1` 
LEFT JOIN `table2` ON 
`table1`.`type` = `table2`.`id`; 

然后,利用数据表显示它,以产生包含以下字段的表:table1idtable2nametable1description

我可以读取数据表中的数据:

var $data = $('#myTable').DataTable(); 
var $row = $data.rows().data(); 

我想更新与新的ID的外键。

我的第一个想法是做一个MySQL的更新,但是这会报错,因为name不存在table1(只有一个外键引用table2id

如何将更新,如果外键引用从data.rows()。data()返回的值显示字符串name而不是整数id from table2(来自前面提到的SELECT语句)?

FIDDLE:https://jsfiddle.net/ns6zahpc/1/

编辑:是否有显示的值都整数ID,并在同一小区的字符串名称值的方法吗?

+0

您是否尝试过在您的选择查询中添加外键的ID?你如何更新table1的'type'列? – dunli

+0

@dunli我已经想通了的采用内部SELECT语句解决我的问题: UPDATE table1的SET'type' =( SELECT ID FROM表2 WHERE 名= '2型' ) WHERE table1.id = 1 – ssaguindel

回答

0

我认为这是你想要的;

UPDATE table1 SET `type` = 'your_value' WHERE `type` IN (
    SELECT id 
    FROM table2 
    WHERE name = 'some_name_value' 
); 
+0

我会试试看。我一直在javascript中寻找某种解决方案,并且隧道视觉获得了我最好的结果。 – ssaguindel

+0

只是试图分解该查询,但内部的SELECT将从table2返回一个ID。所以现在, UPDATE table1 SET'type' ='?'WHERE'type' IN(%table2.id%) 仍然可以工作吗? 将: UPDATE SET table1的'type' =(SELECT'id' FROM表2 WHERE'type' =()?)WHERE table1.id =(%选择%) 更合适? – ssaguindel

+0

我想我现在走在正确的轨道上。谢谢@Kostas Mitsarakis – ssaguindel

相关问题