2013-08-27 220 views
1

我有3个表,并希望从2个表中获取数据并将其转储到第三个表。这两个表格可以具有相互关联的数据和独立数据。所以,我想要得到所有3种可能场景的结合。在MySQL中嵌套的联合声明

的3个不同的表是a,b和c

示例查询:

Insert into c (scode, cname, fvalue, ISIN, nsymbol, paidup) 

select scode, cname, fvalue, ISIN, null, null from a,b where a.ISIN <> b.ISIN 

union 

select scode, cname, fvalue, ISIN, nsymbol, paidup from a,b where a.ISIN = b.ISIN 

union 

select null, b.cname, b.fvalue, b.ISIN, b.nsymbol, b.paidup from a, b where b.ISIN <> a.ISIN 

我得到插入每个记录3行,其中欲被插入仅1记录。任何帮助将不胜感激。

我在寻找类似下面

表A

SCODE CNAME F值ISIN

FB,脸谱,10,INAB13230LL IBM,国际商业机器,10,INAB13230AB

表B

nsymbol cname fvalue ISIN paidup

FBOOK,脸谱,10 INAB13230LL,10 MSFT,微软,10,INAB13230MS,10

表C

SCODE CNAME F值ISIN nsymbol paidup

FB,脸谱,10,INAB13230LL,FBOOK ,10 IBM,国际商业机器,10,INAB13230AB,NULL,NULL 空,微软,10,INAB13230MS,MSFT,提前10个

感谢。

+0

需要查看一些示例数据。但是,您似乎会为每个项目返回3个不同的行。可能你需要的是确定你想要返回哪一个。这可能需要有一个子查询才能获得最重要的记录,然后加入到当前的select中以获取其余的值 – Kickstart

+0

表AFB,Facebook,10,INAB13230LL IBM,International Business Machines,10,INAB13230ABFBOOK,10 FBOOK,脸谱,10 INAB13230LL,10 – user2721022

+0

我在寻找类似下面 表A SCODE CNAME F值ISIN FB,脸谱,10,INAB13230LL IBM,国际商业机器, 10,INAB13230AB 表B nsymbol CNAME F值ISIN paidup FBOOK,脸谱,10 INAB13230LL,10 MSFT,微软,10,INAB13230MS,10 表C SCODE CNAME fintue ISIN nsymbol paidup FB,Fa cebook,10,INAB13230LL,FBOOK,10 IBM,国际商业机器,10,INAB13230AB,NULL,NULL 空,微软,10,INAB13230MS,MSFT,10 – user2721022

回答

1

也许这样的事情会有所帮助。我会竭尽全力用点符号来指定表格列以确定事物来自哪里,并且我将使用如下的排除连接:

select a.scode, a.cname, a.fvalue, a.ISIN, null, null from a left join b on a.ISIN = b.ISIN where b.ISIN IS NULL 

union 

select a.scode, a.cname, a.fvalue, a.ISIN, a.nsymbol, a.paidup from a inner join b on a.ISID = b.ISID 

union 

select null, b.cname, b.fvalue, b.ISIN, b.nsymbol, b.paidup from b left join a on b.ISIN = a.ISIN where a.ISIN IS NULL 
+0

斯蒂芬·奥弗林......你使我一天...它完美的工作......帽子......干杯...... – user2721022

+0

没问题!接受答案,如果它有帮助。 –

+0

对不起......我没有看到“接受”按钮...我点击了刻度标记...我认为那就是你的意思吧? – user2721022