2013-06-05 234 views
1

首先,作爲一個免責聲明,我通過C#間接瞭解了一些SQL/LINQ。我真的很綠。我很快就厭倦了使用充滿數據的示例數據庫並在最簡單的情況下進行查詢。信息是以這種方式呈現的,因爲重點在於C#和可視化編程,而不是SQL或者甚至是LINQ。我應該創建一個視圖還是另一個表?

即便如此,我決定轉換一個簡單的應用程序,我使用文本(CSV)文件進行存儲。該應用程序跟蹤三個可能的應付賬款,其中在給定日期將存在0-3個記錄。我能夠爲每個合同創建數據庫和單獨的表,並構建一個應用程序,該應用程序使用LINQ to SQL類將現有記錄插入到數據庫中。

現在我有另一個應用程序,用於通過合約計算器或直接通過BindingSourceNavigator和DataGridView添加條目。每個表格共有四列 - 日期,GrossPay,TaxAmount和NetPay,日期是主鍵。我想按日期查看記錄,其中包含TotalGross,TotalTax,TotalNet以及該日期GrossPay每個合約表的列。

什麼會正確的方法 - 視圖,LINQ查詢,單獨的表或其他?看起來桌子是「最簡單的」,至少就我的能力而言,似乎是不必要的記錄複製。我試圖「鏈接」表格,但沒有其他專欄保證是唯一的或主要的。

任何建議將是偉大的。


澄清:

三個表格的格式爲:

|日期| GrossPay | TaxAmount | NetPay | ...每個人都有不共同的... |

**每個表具有用於基於合同類型來計算公共列特定數據



我想觀看的所有記錄按日期「分組」,使得每個被表示像:

|日期| TotalGross | TotalTax | TotalNet | Table1Gross | Table2Gross | Table3Gross |

**「總計」列是共享日期的所有記錄的各列的總和。

**的一個或兩個「表(ñ)毛重」的可以是零


+0

它有點難以理解你在這個問題上試圖做什麼,你能澄清它嗎? – dcarson

回答

0

我認爲你是問你是否可以按日期對列選擇從三個不同的表中的記錄,他們有共同點?

如果是這樣,你需要做一個工會。

在你的情況下,它可能看起來像這樣的SQL。請注意,我已經做出了虛擬列來表示記錄的來源(你可能想)

SELECT Date, GrossPay, TaxAmount, NetPay, 'Table1' as Source FROM Table1 
UNION 
SELECT Date, GrossPay, TaxAmount, NetPay, 'Table2' as Source FROM Table2 
UNION 
SELECT Date, GrossPay, TaxAmount, NetPay, 'Table3' as Source FROM Table3 
WHERE Date = '2013-05-05' 

我不會以期打擾,絕對不要用單獨的表中複製數據。

+0

感謝您的回答。基於一些限制條件,我不會將整個表格整合在一起。這最終成爲三張表的單獨列表。由於問我已經看到了插入多個表的其他例子。您的建議是不是基於大數據集這麼做?最多也很少會有每天插入四條記錄,每年總共不到1600條。 – ChiefTwoPencils

+0

就記錄數而言,這可以忽略不計,但複製數據是一個壞主意。 – dcarson

相關問題