需要帮助使用来自 DataTable 的数据处理来自 MySQL 的数据

Posted

技术标签:

【中文标题】需要帮助使用来自 DataTable 的数据处理来自 MySQL 的数据【英文标题】:Need assistance manipulating data from MySQL with data from DataTable 【发布时间】:2016-02-05 17:15:05 【问题描述】:

是否可以使用外键更新 mysql 表(使用 DataTables 显示)? 例如,我有两个表:

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

假设表格填充了:

[1, 1, 'description 1']

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

我的 table1.type 字段是 Table2 的 id 字段的整数外键。我可以运行一个选择查询:

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

然后,将其与 DataTables 一起显示以生成包含以下字段的表:table1.idtable2.nametable1.description

我可以通过以下方式从数据表中读取数据:

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

我想用新的 id 更新外键。

我的第一个想法是执行 MySQL UPDATE,但这会出错,因为 table1 中不存在 name(仅对 table2.id 的外键引用)

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

小提琴:https://jsfiddle.net/ns6zahpc/1/

编辑:有没有办法在同一个单元格中同时显示整数 id 值和字符串名称值?

【问题讨论】:

你试过在你的选择查询中添加外键的id吗?如何更新 table1 的type 列? @dunli 我已经使用内部 SELECT 语句找到了解决问题的方法: UPDATE table1 SET type = ( SELECT id FROM table2 WHERE name = 'type 2' ) WHERE table1.id = 1 【参考方案1】:

我想这就是你想要的;

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

【讨论】:

我试试看。我一直在寻找 javascript 中的某种解决方案,而这种隧道视野让我受益匪浅。 只是试图分解该查询,但内部 SELECT 将从 table2 返回一个 ID。所以现在,UPDATE table1 SET type = ? WHERE type IN (%table2.id%) 仍然有效吗?会:UPDATE table1 SET type = (SELECT id FROM table2 WHERE type = (?)) WHERE table1.id = (%selector%) 更合适吗? 我认为我现在走在正确的轨道上。谢谢@Kostas Mitsarakis 您可以根据您的数据尝试一些变化。很高兴能帮到你!

以上是关于需要帮助使用来自 DataTable 的数据处理来自 MySQL 的数据的主要内容,如果未能解决你的问题,请参考以下文章

DataTable 不接受来自数据库的 json

Flutter:使用来自 Firestore 的多集合流创建动态更新的 DataTable

过滤来自`datatable`的`datagridview`中的数据

使用Knockout BindingHandler公开JQuery.Datatables选择?

DataTable 中的多个数组

如何获取datatable的某个值?