需要帮助使用来自 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
.id
、table2
.name
、table1
.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 SETtype
= ?
WHERE type
IN (%table2.id%) 仍然有效吗?会:UPDATE table1 SET type
= (SELECT id
FROM table2 WHERE type
= (?)) WHERE table1.id = (%selector%) 更合适吗?
我认为我现在走在正确的轨道上。谢谢@Kostas Mitsarakis
您可以根据您的数据尝试一些变化。很高兴能帮到你!以上是关于需要帮助使用来自 DataTable 的数据处理来自 MySQL 的数据的主要内容,如果未能解决你的问题,请参考以下文章
Flutter:使用来自 Firestore 的多集合流创建动态更新的 DataTable
过滤来自`datatable`的`datagridview`中的数据