卡在数据库设计中,无法查询结果

本文关键字:查询 结果 数据库 | 更新日期: 2023-09-27 18:25:09

>我设计了我的数据库,其中我一年有 4 个季度,我有 3 个年份值,即

2015 (Quarter 1) | 2014 (Quarter 1) | 2013 (Quarter 1)

就像,如果我选择2014年(第一季度(,它会像

2014 (Quarter 1) | 2013 (Quarter 1) | 2012 (Quarter 1).

其他方面也是如此。我的数据库表是这样的:

First_Year | Second_Year | Third_Year | For_Year | Quarter_Year | CODE 
12         | 15          | 16         | 2015     |      1       | Interest_Earned
6          | 5           |  6         | 2015     |      1       | Interest_Expense

现在让我们说,我的First_Year = For_Year(在本例中为 2015 年(、我的Second_Year = For_Year - 1(在本例中为 2014 年(和我的Third_Year = For_Year - 2(根据上述表格为 2013 年(。

我想查询这些结果并在PL SQL的帮助下填充 ASP.NET 文本框。假设用户通过下拉列表在前端选择了第 1 季度和 2015 年,我必须选择第 1 季度和 2015 年的数据,这很容易,以及所有其他字段。

但是,如果我要输入2016年的数据,我会提前提供2015年和2014年的数据(见表中我有可用的数据(。当我输入2016年的数据时,我不应该重新输入2015年和2014年的数据。这就是我会卡住的地方,因为我无法一次又一次地复制我的数据。为了完成数据,我一次又一次地复制数据是没有问题的,但我仍然一无所知。我如何只选择相关数据来填充我的文本框和报表。

假设我选择了 2016 年的数据,因此在本

例中,我必须填充与 2015 年和 2014 年数据相关的文本框,但由于我没有 2016 年的数据,因此该部分的文本框将为空。请帮帮我。

我应该改变我的设计吗?我完成了大约 80% 的工作,现在我面临着艰难的最后期限。

简单来说,我正在制作资本风险操作的资本充足率报告。

卡在数据库设计中,无法查询结果

我 100% 绝对建议更改您的数据库设计,因为它目前的结构是不可持续的。你很幸运,你很快就遇到了问题,因为有时糟糕的设计可能会存在多年,然后才遇到交易破坏者(此时重新设计可能在财务上不在桌面上(。

阅读数据库规范化、第三范式(数据规范化的目标(,并查看一些有关如何获取数据集并使其成为 3NF 的教程。

作为提示,所有列数据应在同一行中列出,并且数据应分开,以便排除重复项,例如:

时间表:

ID   | Year | Quarter
1401 | 2014 |  1     
1502 | 2015 |  2
1501 | 2015 |  1     

值表:

TimeID | ExpenseCode      | Value
1401   | Interest_Earned  |  10
1502   | Interest_Expense |  25

这样做的目的是最终您可以使用 ANSI SQL 执行复杂的查询,如下所示:

SELECT Sum(Value) 
FROM ValueTable
WHERE TimeID Between [BoundVariable] and [BoundVariable];

这将允许您在数据库引擎本身中执行复杂的查询,而不是在c#前端中构建密集的逻辑。只要确保阅读SQL注入,MVC和3层架构,以确保您的重新设计不会引入任何问题。