假设我每分钟左右记录一次汽车的纬度和经度,每次都在表格中添加一行。
我想要一个有 4 列的数据库网格
- 纬度
- 经度
- 自上次测量以来的距离
- 当前街道地址,如果知道的话
第 4 点,我可以尝试从 Google 地图中检索,但我得到一个文本或空白,所以让我们忽略它。
我如何获得#3?我应该在我的应用程序或 MySql 中计算它(使用存储过程还是只是一个复杂的 SELECT)?
无论哪个答案,有人可以提供一些示例代码或示例链接吗?Google 今天不是我的朋友 :-(
假设我每分钟左右记录一次汽车的纬度和经度,每次都在表格中添加一行。
我想要一个有 4 列的数据库网格
第 4 点,我可以尝试从 Google 地图中检索,但我得到一个文本或空白,所以让我们忽略它。
我如何获得#3?我应该在我的应用程序或 MySql 中计算它(使用存储过程还是只是一个复杂的 SELECT)?
无论哪个答案,有人可以提供一些示例代码或示例链接吗?Google 今天不是我的朋友 :-(
你可以这样做:
在您的查询中计算它,并将其显示在计算列中(例如在您显示的位置显示行总计时ITEM_PRICE, QUANTITY, ITEM_PRICE * QUANTITY AS LINE_COST
。
在应用程序中计算它,使用计算字段(双击 TTable 组件打开字段编辑器,添加字段,将类型设置为 ftCalculated,并在 OnCalcEvent 中为该计算字段编写代码。
第一个选择通常更可取,因为 DB 通常在对数据集执行此类操作时比您的代码按行执行操作更有效。(集合操作显然比行操作更有效。)
Ken 的回答是尽其所能,因为解决问题的最困难任务是在 SQL 中同时从两行获取数据。如果您使用的是 Oracle 或 SQL Server,则可以使用分析/窗口 LAG 功能。使用 MySQL,您必须自己做。这里有 2 篇关于如何在 MySQL 中模拟 LAG 的文章
http://explainextended.com/2009/03/12/analytic-functions-optimizing-lag-lead-first_value-last_value/
另外还有关于如何从前一行获取数据的 StackOverflow 问题。
我不能对其中任何一个提供任何意见,因为我很少使用 MySQL。