【发布时间】:2015-09-29 13:09:54
【问题描述】:
所以我有一个我在 Crystal Reports 中创建的报告,在一个部分中它从表格中提取订单号,但只显示客户的最新订单号。这个订单表非常大,我担心如果有人在一个大的日期范围内运行报告,水晶会在不需要时从数据库中提取大量数据。
有没有办法限制水晶为订单号提取的记录数量?类似于 select top 20 * SQL 语句的工作原理。
好的,这里有更多关于我如何布置所有内容的信息。 我有一个这样的订单表:
<table border>
<tr><td colspan=3>Table Name = Orders</td></tr>
<tr><td>Date</td><td>Order Number</td><td>Customer Number</td></tr>
<tr><td>2015-09-01</td><td>12345</td><td>1</td></tr>
<tr><td>2015-09-01</td><td>12346</td><td>2</td></tr>
<tr><td>2015-09-01</td><td>12347</td><td>3</td></tr>
<tr><td>2015-09-02</td><td>12348</td><td>1</td></tr>
</table>
我有一个这样的客户表:
<table border>
<tr><td colspan=3>Table Name = Customers</td></tr>
<tr><td>Customer Number</td><td>First Name</td><td>Last Name</td></tr>
<tr><td>1</td><td>John</td><td>Doe</td></tr>
<tr><td>2</td><td>Sara</td><td>Thomas</td></tr>
<tr><td>3</td><td>James</td><td>Jones</td></tr>
</table>
这两个表是链接的,它们将被添加到我的报告中以显示如下内容:
日期范围:9 月 1 日 - 9 月 5 日
客户:John Doe 订单号:12348
客户:萨拉·托马斯 订单号:12346
客户:詹姆斯·琼斯 订单号:12347
该列表将显示在某个日期范围内添加的所有新客户,但订单号仅显示最近的订单。可能发生的情况是,如果我在几个月前的某个日期范围内(例如 3 月 5 日至 4 月 5 日)运行报告,它将显示该日期范围内的所有新客户,但它会提取从 3 月 5 日到现在的所有订单号,并且然后只显示最近的订单。我想要做的就是限制订单号,所以只有前 20 个左右被拉出来。
【问题讨论】:
-
请尝试这种类型的查询:- select * from table order by (id or date desc) limit 20
-
如果您有分区或您的 id 是自动递增的,我建议添加一些条件,例如 current_date - 间隔 1 天和 now() 之间的日期
-
抱歉,我认为我的问题措辞不是很好...我需要能够限制 Crystal Reports 本身中提取的记录,我只是将 SQL 语句用作我在 Crystal 中尝试做的示例
-
您要限制的订单数量总是相同的还是每次您要限制不同的订单?
标签: mysql database performance crystal-reports limit