2013-08-27 213 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