【发布时间】:2016-03-17 10:39:28
【问题描述】:
我不知道我是否在标题中正确描述了这个问题,但在这里。
我在 MySQL 数据库中有以下表:
路线点:
routepoint_id | route_id | latitude | longitude | location | routepoint_time
_________________|__________|________________|___________________|__________|__________________
24 | 38 | 9.32454363 | 10.65785453 | blah | 1232455678
25 | 38 | 56.72112300 | 11.40735700 | blah | 3324546454363
26 | 39 | 12.83276562 | 12.83276562 | blah | 54321325541
27 | 39 | 52.72112300 | 10.23400000 | blah | 64321325541
_________________|__________|________________|___________________|__________|__________________
| | | | |
还有路线
route_id | user_id | creation_date
_______________|___________|________________
38 | 18 | 1243256576
39 | 16 | 3463468576543
_______________|___________|________________
| |
我想要做的是: 从 routepoints 表中为给定的 user_id 列表选择数据,其中 routepoint_time 具有最大值。
我正在尝试通过 PHP 和 Mysqli 来实现这一点,其中我为以下查询提供了一个 user_id 数组:
$stmt = $this->con->prepare("SELECT routes.user_id, routepoints.latitude, routepoints.longitude, MAX(routepoints.routepoint_time) AS maxTime, users.status
FROM routepoints
INNER JOIN routes ON routepoints.route_id = routes.route_id
INNER JOIN users ON routes.user_id = users.user_id
WHERE routes.user_id IN ({$idArray})
GROUP BY routes.user_id");
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($user_id, $latitude, $longitude, $routePointTime, $status);
以上查询返回如下结果:
{
"status": true,
"friendsLocationList": [
{
"userId": 16,
"latitude": 12.83276562,
"longitude": 12.83276562,
"routePointTime": "64321325541",
"onlineStatus": 0
},
{
"userId": 18,
"latitude": 9.32454363,
"longitude": 10.65785453,
"routePointTime": "3324546454363",
"onlineStatus": 0
}
]
}
如您所见,问题在于它返回了最大的 routepoint_time 值,但它与其他关联值(纬度、经度等)不匹配。
我怎样才能做到这一点?
我希望你能理解我想要达到的目标。任何帮助将不胜感激。
【问题讨论】:
-
这个问题被问到和回答得如此频繁,以至于它变得无聊
-
@Strawberry,指向重复,让我们结束问题。
-
@innoSPG 为规范问题建立一个更好的系统,我会
-
@strawberry:看看你的用户资料,你似乎比我更有经验。由于您之前的答案之一似乎已经解决了这个问题(我确信以一种更高效的方式),所以在这里链接到它怎么样(它是规范的吗?idk)。
标签: php mysql mysqli groupwise-maximum