でクエリを作成しまし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
3000で使用する$iKm
と、この行も返されます。
id = 1
name = Snackbar
image =
tags = Patat, Snacks
distance = 722.407714147792
だから私は2つのレコードを取得します。これをgroupbyand $iKm
=30で使用すると; 何も返しません。値が3000の場合、1行を返します。しかし、私は17マイルの距離で30未満のレコードを1つ持っています。