asp.net按日期范围排序多个sql数据库表

lnlaulya  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(266)

上周我的任务是将一个基于php的数据库迁移到一个新的sql数据库。有一些要求,但其中之一是使用asp.net mvc连接到sql数据库…我从未使用过asp.net或mvc。
我已经成功地将数据库移动到SQL,并建立了ASP站点的基础(经过许多小时的教程)。我现在遇到的问题是,其中一个页面要显示几个字段(用户名、工作日期、工作描述、工作位置等),但获取所有这些字段的唯一方法是合并两个表。此外,我需要允许用户在组合表中搜索用户输入的日期范围之间的任何匹配行。
我试过建立一个显示正确字段的基本表,并实现了一个搜索栏……但这只允许我按单个日期搜索,而不是按范围搜索。我还尝试使用gridview的querybuilder特性来获取所需的数据字段(效果非常好),但是我不知道如何将文本框/按钮附加到新创建的gridview。在gridview中使用一个表非常有效,使用文本框/按钮非常直观。我只是无法与一个连接视图建立同样的连接。
因此,我想我的问题是:对于我来说,在仍然能够对显示的数据执行搜索的同时,组合这两个表的最佳方式是什么?如果我可以从头开始建立这个数据库,我只需要制作一个表,表中附带了相关的数据,但是因为它是从以前制作的数据库中派生出来的,所以我需要将12年以上的信息转储到其中。
任何帮助都将不胜感激。我好像死在水里了。我对这些系统缺乏经验,这使我越来越好。我可以发布我的代码,但我主要是在我的选择感兴趣,然后我可以做我自己的研究。
谢谢!

ie3xauqp

ie3xauqp1#

由于需要猜测,很难对你的问题给出明确的答案。
但这里有一些提示。
你可以说 WHERE datestamp >= '2017-01-01' AND datestamp < '2018-01-01' 过滤2017日历年的所有行。这种日期范围过滤器有很多变体。
第一个表的每一行可能都有某种id号。我们就叫它吧 first.first_id . 你的第二张table可能有自己的id,我们称之为 second.second_id . 而且,它可能有另一个标识第一个表中的行的id,我们称之为 second.first_id . 那个 second.first_id 在第一个表的第二个表中称为外键。通过这个外键,第二个表中可以有任意数量的行与第一个表相对应。
如果是这种情况,你可以这样做:

SELECT first.datestamp, first.val1, first.val2, second.val1, second.val2
   FROM first
   JOIN second ON first.first_id = second.first_id
  WHERE first.datestamp >= '2018-06-01' AND first.datestamp < '2018-07-01'
    AND (first.val1 = 'some search term' OR second.val1 = 'some search term')
  ORDER BY first.datestamp

这通过将两个物理表连接在一起形成一个虚拟表( FROM...JOIN... ).
然后,它从该虚拟表中筛选所需的行( FROM ... ).
然后按你想要的顺序排列( ORDER BY... ).
最后,它从结果集中所需的虚拟表中选择列( SELECT ... ).
sql数据库服务器(mysql、sqlserver、postgresql、oracle等)非常聪明,能够高效地完成这类工作。

相关问题