2013-06-05 190 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

相关问题