我已经写了一个查询,DISTINCT
但我仍然返回重复的记录。
SELECT DISTINCT
`cuisine_types`.`id`,
`cuisine_types`.`name`,
`cuisine_types`.`image`,
(
SELECT group_concat(`tagname` separator ', ')
FROM `cuisine_tags`
WHERE `cuisine_type` = `cuisine_types`.`id`
) AS tags,
(
3959 * acos( cos( radians(" . $dLat . ") ) * cos( radians( gps_lat ) ) * cos( radians( gps_lon ) - radians(" . $dLon . ") ) + sin( radians(" . $dLat . ") ) * sin( radians( gps_lat ) ) )
) AS distance
FROM `company`
LEFT JOIN `cuisine_types`
ON
`company`.`cuisine_type_id` = `cuisine_types`.`id`
HAVING
distance < " .$dMiles
当我尝试使用该GROUP BY
功能时,我的查询无法正常工作。当我使用时GROUP BY
,我将它放在我的上方HAVING
:
GROUP BY `cuisine_types`.`name`
例子:
当我将它与这些值一起使用时:
$dLat = '52.779716';
$dLon = '21.84803';
$iKm = '30';
它返回:
id = 1
name = Snackbar
image =
tags = Patat, Snacks
distance = 17.4713944772963
当我$iKm
与 3000 一起使用时,它也会返回这一行:
id = 1
name = Snackbar
image =
tags = Patat, Snacks
distance = 722.407714147792
所以我得到了两条记录。当我将它与 groupby 和$iKm
= 30 一起使用时;它什么也不返回。值为 3000 它返回一行。但我有一个距离为 17 英里的记录,因此低于 30。