我很难找到解决方案,我希望有人可以帮助我。 有6个不同的商店有不同的产品,有些商店在一些商店和其他商店不一致。
我有6个具有相同字段的表:缩写词,名称,类别,数量和值。 我需要将同一个表中的所有产品合并为"缩写"他们之间。
我的数据库不支持FULL OUTER JOIN功能。
我需要这样的回报:
(* Qtt =数量)
答案 0 :(得分:0)
说t1,t2,t3,t4,t5,t6是你的表。这应该让你开始:
select
acro.acronym,t1.name t1name, t2.name t2name .....
from (
select acronym from t1 union
select acronym from t2 union
select acronym from t3 union
select acronym from t4 union
select acronym from t5 union
select acronym from t6
) acro
left join t1 on acro.acronym = t1.acronym
left join t2 on acro.acronym = t2.acronym
left join t3 on acro.acronym = t3.acronym
left join t4 on acro.acronym = t4.acronym
left join t5 on acro.acronym = t5.acronym
left join t6 on acro.acronym = t6.acronym
子查询acro
只是从6个表中构建一个唯一的缩略词列表,然后左边连接源表将数据与每个(和所有)缩略词对齐。
答案 1 :(得分:0)
这假设它们没有相同的列:
CREATE TABLE AllData
( SELECT acronym, this, that, ... FROM t1 )
UNION ALL
( SELECT acronym, this, NULL as that, ... FROM t2 ) -- no "that" in t2
UNION ALL
( SELECT acronym, NULL as this, that, ... FROM t3 ) -- no "this" in t3
...
如果acronym
是PRIMARY KEY
,那么就这样开始:
CREATE TABLE AllData ( PRIMARY KEY(acronym) )
( SELECT ...
如果您需要新的AUTO_INCREMENT
,请执行以下操作:
CREATE TABLE AllData ( id INT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(id) )
( SELECT ...
如果他们确实有相同的列,请忽略我关于NULL as ...
的说明。