我想解决这个问题......请帮忙:( 我有三个表,我正在从另外两个表的数据中更新表。
更新表: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 [id],baseimage [id]以及baseimage =“B”更新set_colors表,所以它需要做的是遍历art table“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;
答案 0 :(得分:0)
我建议查看MySQL UPDATE文档here。我相信您的更新需要根据MySQL语法进行重组。
答案 1 :(得分:0)
首先,当您说“填充表格”时,您是否希望此查询插入新行?更新查询不会创建新行,只会更新表中已存在的行。
其次,看起来你期望mysql_query
返回一个数组。执行插入或更新查询时,此函数仅返回true
或false
,具体取决于查询是否正确执行。
答案 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'