卡在数据库设计中,无法查询结果
本文关键字:查询 结果 数据库 | 更新日期: 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层架构,以确保您的重新设计不会引入任何问题。