我很努力尝试解决这个问题。...请帮助:(
我有三个表,我正在从另外两个表的数据更新一个表。

更新表:set_colors
列:setcolors_id(主要),art_id(int),baseimage_id(int),color_id(int)

我从两个表中获取信息

表名:art
列:id(主要),artname(varchar),series_code(varchar)

表格名称:baseimage
列:id(主要),base_folder(varchar),图形,image_type(varchar),layer(int)
示例数据:

art表中的series_code和baseimage表中的base_folder具有相同的值,但是art表中可以具有数百个重复的系列代码,并且如果base_folder名称相同但层不同,则baseimage最多只能有5个最大值。

示例数据:




我想用art表[id],baseimage [id]和baseimage =“ B”来更新set_colors表,所以它需要做的是遍历art表“ 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;

最佳答案

根据评论,我认为您的插入语句应如下所示:

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'

关于php - UPDATE新表JOIN其他两个表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6736955/

10-12 04:47