[英]UPDATE new table JOIN two other tables?
我要瘋了,試圖解決這個問題....請幫助:(我有三個表,我正在從另外兩個表的數據中更新一個表。
更新表:set_colors 列:setcolors_id (primary), art_id(int), baseimage_id(int), color_id(int)
我從中獲取信息的兩個表
表名:藝術列:id(primary)、artname(varchar)、series_code(varchar)
表名:baseimage 列:id(primary)、base_folder(varchar)、graphic、image_type(varchar)、layer(int) 示例數據:
art 表中的series_code和baseimage表中的base_folder具有相同的值,但 art 表可以有數百個重復的系列代碼,如果 base_folder 名稱相同但具有不同的層,則 baseimage 最多可能只有 5 個。
示例數據:
我想用藝術表[id]、baseimage [id]和baseimage =“B”來更新set_colors表,所以它需要做的是遍歷藝術表“layer”列——color_id將由另一個 sql 查詢更新,因此某些行可能是 int 或 NULL
所以結果應該是這樣的:
我想出的是這個,但它不起作用,沒有錯誤消息。 它只是不填充表格。 我錯過了什么??
$result_array = mysql_query("
UPDATE set_colors
JOIN art
JOIN baseimage
ON art.series_code = baseimage.base_folder
SET set_colors.school_art_id = art.id,
set_colors.baseimage_id = baseimage.id,
set_colors.baseimage_layer = baseimage.layer
WHERE baseimage.image_type = 'B'"
);
return !empty($result_array) ? array_shift($result_array) : false;
我建議在這里查看MySQL 更新文檔。 我相信您的更新需要根據 MySQL 語法進行重組。
首先,當您說“填充表”時,您是否希望該查詢插入新行? 更新查詢不會創建新行,只會更新表中已存在的行。
其次,您似乎期望mysql_query
返回一個數組。 此 function 僅在執行插入或更新查詢時返回true
或false
,具體取決於查詢是否正確執行。
根據評論,我認為您的插入語句應如下所示:
INSERT INTO set_colors
(art_id, baseimage_id)
SELECT a.id, b.id
FROM baseimage b
INNER JOIN art a
ON b.base_folder = a.series_code
WHERE b.image_type = 'B'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.