簡體   English   中英

更新新表加入另外兩個表?

[英]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_codebaseimage表中的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 僅在執行插入或更新查詢時返回truefalse ,具體取決於查詢是否正確執行。

根據評論,我認為您的插入語句應如下所示:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM