イムを持つ不明な集計列(Laravelとその雄弁ORMを使用して)PHP + MySQLでは、ロケーションベースのイベント検索を構築しようとしている句
これは、私が使用していますクエリです:
select
events.*,
(3959 * acos(cos(radians(50.5)) * cos(radians(addresses.latitude)) * cos(radians(addresses.longitude) - radians(9.50)) + sin(radians(50.5)) * sin(radians(addresses.latitude)))) AS distance
from
`events` inner join `addresses` on `events`.`address_id` = `addresses`.`id`
having
`distance` <= 10
order by
`id` desc limit 15 offset 0
イム距離の列が「select文」に入っていても、なぜこのエラーがポップアップしているのか不思議です。
"SQLSTATE[42S22]: Column not found: 1054 Unknown column 'distance' in 'having clause' (SQL: select count(*) as aggregate from `events` inner join `addresses` on `events`.`address_id` = `addresses`.`id` having `distance` <= 10 order by `id` desc)"
これは私がベースのクエリにスコープを追加するために使用PHPコードです:
$selectDistance =
'(3959 * acos(cos(radians(' . $latitude . ')) ' .
'* cos(radians(addresses.latitude)) ' .
'* cos(radians(addresses.longitude) - radians(' . $longitude . ')) ' .
'+ sin(radians(' . $latitude . ')) ' .
'* sin(radians(addresses.latitude)))) AS distance';
$query->select(DB::raw('events.*, ' . $selectDistance));
$query->join('addresses', 'events.address_id', '=', 'addresses.id');
$query->having('distance', '<=', $km);
はどうもありがとうございました:)
'ONLY_FULL_GROUP_BY'システム・パラメータは、この効果を持っているかどうだろうか。 –