UPDATE新表JOIN另外两个表?

时间:2011-07-18 17:41:27

标签: php mysql

我想解决这个问题......请帮忙:( 我有三个表,我正在从另外两个表的数据中更新表。

更新表:set_colors columns:setcolors_id(primary),art_id(int),baseimage_id(int),color_id(int)

我从

获取信息的两个表格

表名:艺术 columns:id(primary),artname(varchar),series_code(varchar)

表名:baseimage columns:id(primary),base_folder(varchar),graphic,image_type(varchar),layer(int) 示例数据:

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

示例数据:

Art Table baseimage

我想用art table [id],baseimage [id]以及baseimage =“B”更新set_colors表,所以它需要做的是遍历art table“layer”列 - color_id将由另一个SQL查询更新,因此某些行可能是int或NULL

所以结果应该是这样的:

Result Set Colors table

我想出的是这个,但它不起作用,没有错误信息。它只是没有填充表格。我错过了什么?

$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;

3 个答案:

答案 0 :(得分:0)

我建议查看MySQL UPDATE文档here。我相信您的更新需要根据MySQL语法进行重组。

答案 1 :(得分:0)

首先,当您说“填充表格”时,您是否希望此查询插入新行?更新查询不会创建新行,只会更新表中已存在的行。

其次,看起来你期望mysql_query返回一个数组。执行插入或更新查询时,此函数仅返回truefalse,具体取决于查询是否正确执行。

答案 2 :(得分:0)

根据评论,我认为你的插入语句看起来像这样:

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'