2016-09-16 77 views
1

所以我有一個SQL表檢查數據將保存像這樣創建SQL視圖,在多個表

--------------------------------------------------- 
| RecordID | Date | Price 
-------------------------------------------------- 
| 1 | 8/31/2016 | 49 
-------------------------------------------------- 
| 2 | 8/31/2016 | 101 
-------------------------------------------------- 

ID和我有,將舉行關於這個ID信息,並且可以有不同的其他3個表色譜柱數量

Table 1 
--------------------------------------------------- 
| RecordID | Date | Price | Name 
-------------------------------------------------- 
| 1 | 8/31/2016 | 50 | System 
-------------------------------------------------- 
Table 2 
--------------------------------------------------- 
| RecordID | Date | Price | Coupon 
-------------------------------------------------- 
| 2 | 8/31/2016 | 100 | 7 
-------------------------------------------------- 

但是ID在它們之間分開。含義表1可以具有ID 1,然後表2可以具有ID 2等等。一個ID只能存在於三個表中的一箇中。

所以我的願望是創建一個視圖,我可以從原始表中的ID和價格發現存在的表的ID,並把它放在一起很好地這樣

--------------------------------------------------- 
| RecordID | Date | Price1 | Price2 
-------------------------------------------------- 
| 1 | 8/31/2016 | 49 | 50 
-------------------------------------------------- 
| 2 | 8/31/2016 | 101 | 100 
-------------------------------------------------- 

回答

1

你可以做它使用LEFT OUTER JOINS和​​3210。

假設你有一個主表稱爲tRecords和其他3個表稱爲tInfo1tInfo2tInfo3,所有這些有RecordIDPrice列:

SELECT 
    A.RecordID 
    ,A.[Date] 
    ,A.Price AS Price1 
    ,COALESCE(B.Price,C.Price,D.Price) AS Price2 
FROM 
    tRecords A 
    LEFT OUTER JOIN tInfo1 B 
     ON A.RecordID = B.RecordID 
    LEFT OUTER JOIN tInfo2 C 
     ON A.RecordID = C.RecordID 
    LEFT OUTER JOIN tInfo3 D 
     ON A.RecordID = D.RecordID 
0

取決於你擁有的數據類型的表,考慮創建一個視圖的結果結合你3代其他表的,可以通過虛擬組合表:

create view vRecordCombo 
select RecordId, Date, Price, Name as 'InfoString', NULL as 'InfoValue' 
from table1 
UNION ALL 
select RecordId, Date, Price, NULL as 'InfoString', Coupon as 'InfoValue' 
from table2 

然後,你可以做Ĵ就像它是一個包含所有記錄的單個表一樣。