我尝试将一个表中的数据合并到另一个表中,并且需要从第三个表中检索数据。如何根据T1中的数据从T2中的T3中插入数据?
我有三个表:
T1 :pd_id,default_cat_id,文章
T2 :id_category,art_no,origin_desc,origin_code,origin_ref
T3 :pd_id,id_lang,new_desc,new_code,new_ref
T3需要更新,列中的特定字段为:new_desc,new_code,new_ref:
图中所示: T1, T2, T3 and the desired result in T3
我尝试使用JOINS进行服务器操作,但无法获取。
MySQL
UPDATE t3
INNER JOIN t1 ON (
t1.article=t2.art_no
AND t1.default_cat_id=t2.id_category
AND t1.pd_id=t3.pd_id
)
INNER JOIN t2 ON (
t2.origin_desc=t3.new_desc
AND t2.origin_code=t3.new_code
AND t2.origin_ref=t3.new_ref
AND t2.art_no=t1.article
AND t2.id_category=t1.default_cat_id
)
SET
t2.origin_desc=t3.new_desc,
t2.origin_code=t3.new_code,
t2.origin_ref=t3.new_ref
WHERE
t2.art_no=t1.article
AND t2.id_category=t1.default_cat_id
AND t3.id_lang=2;
#1054-子句表中的未知列't2.art_no'
答案 0 :(得分:0)
您在这里进行一些奇怪的连接。
开始时,您将t3
与t1
连接在一起,但是ON
子句包含:
t1.article=t2.art_no
AND t1.default_cat_id=t2.id_category
t2.art_no
和t2.id_category
在语句的这一点不存在,因为t2
还不存在。
稍后会介绍,但目前不存在。
因此,您不能同时使用t2
的列。
也许删除这些行,因为我发现它们也存在于WHERE
子句中。
您还说过您想更新表t3
,但这些行:
SET
t2.origin_desc=t3.new_desc,
t2.origin_code=t3.new_code,
t2.origin_ref=t3.new_ref
更新表t2的列。
他们应该是:
SET
t3.new_desc=t2.origin_desc,
t3.new_code=t2.origin_code,
t3.new_ref=t2.origin_ref
还是其他?
答案 1 :(得分:0)
感谢@forpas-这是正确方向的提示。
我现在已经修剪了代码,它可以正常工作,现在看起来像这样:
MySQL
UPDATE t3
INNER JOIN t1 ON (
t1.pd_id=t3.pd_id
)
INNER JOIN t2 ON(
t2.art_no=t1.article
)
SET
t3.new_desc=t2.origin_desc,
t3.new_code=t2.origin_code,
t3.new_ref=t2.origin_ref
WHERE
t2.id_category=t1.default_cat_id
AND t3.id_lang=2;