1

首先,作为免责声明,我正在通过 C# 间接了解 SQL/LINQ。我真的很绿色。我很快就厌倦了使用充满数据的示例数据库和在最简单的情况下进行查询设置。以这种方式呈现信息是因为重点是 C# 和可视化编程,而不是 SQL 甚至 LINQ 的毛病。

即便如此,我还是决定将我编写的一个简单应用程序转换为使用文本 (CSV) 文件进行存储。该应用程序跟踪三个可能的应付账款,其中在给定日期将存在 0 - 3 条记录。我能够为每个合同创建数据库和单独的表,并构建一个使用 LINQ to SQL 类将现有记录插入数据库的应用程序。

现在我有另一个应用程序,用于通过合同计算器或直接通过 BindingSourceNavigator 和 DataGridView 添加条目。每个表共有四列 - Date、GrossPay、TaxAmount 和 NetPay,Date 是主键。我想按日期查看记录,其中我有 TotalGross、TotalTax、TotalNet 以及该日期的 GrossPay 每个合同表的列。

什么是正确的方法 - 视图、LINQ 查询、单独的表或其他?至少就我的能力而言,表格似乎是“最简单的”,但似乎是不必要的记录复制。我试图“链接”这些表,但不能保证其他列是唯一的或主要的。

任何建议都会很棒。


澄清:

三个表的格式为:

| 日期 | 总支付 | 税额 | 网付 | ...每个人都有其他不共同点... |

** 每个表都有特定的数据,用于计算基于合约类型的常用列



我想查看按日期“分组”的所有记录,以便每个记录都表示为:

| 日期 | 总额 | 总税 | 全网 | 表 1 总值 | Table2Gross | Table3 总表 |

** “总计”列是共享日期的所有记录的相应列的总和。

** “Table( n )Gross”中的一个或两个可能为零


4

1 回答 1

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'

我不会打扰视图,也绝对不会使用单独的表复制您的数据。

于 2013-06-05T03:40:31.743 回答