2015-11-05 77 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