【问题标题】:Need assistance manipulating data from MySQL with data from DataTable需要帮助使用来自 DataTable 的数据处理来自 MySQL 的数据
【发布时间】: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

标签: jquery mysql datatables


【解决方案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
  • 您可以根据您的数据尝试一些变化。很高兴能帮到你!
猜你喜欢
  • 1970-01-01
  • 2011-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-07
相关资源
最近更新 更多