im trying build location based event search in php + mysql (using laravel , eloquent orm)
this query using:
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 ) ) ) ) distance `events` inner join `addresses` on `events`.`address_id` = `addresses`.`id` having `distance` <= 10 order `id` desc limit 15 offset 0
im wondering why error pops up, though distance column in "select statement".
"sqlstate[42s22]: column not found: 1054 unknown column 'distance' in 'having clause' (sql: select count(*) aggregate `events` inner join `addresses` on `events`.`address_id` = `addresses`.`id` having `distance` <= 10 order `id` desc)"
this php code use add scope base query:
$selectdistance = '( 3959 * acos( cos( radians(' . $latitude . ') ) ' . '* cos( radians( addresses.latitude ) ) ' . '* cos( radians( addresses.longitude ) - radians(' . $longitude . ') ) ' . '+ sin( radians(' . $latitude . ') ) ' . '* sin( radians( addresses.latitude ) ) ) ) distance'; $query->select(db::raw('events.*, ' . $selectdistance)); $query->join('addresses', 'events.address_id', '=', 'addresses.id'); $query->having('distance', '<=', $km);
thank :)
from error message:
"sqlstate[42s22]: column not found: 1054 unknown column 'distance' in 'having clause' (sql: select count(*) aggregate
events
inner joinaddresses
onevents
.address_id
=addresses
.id
havingdistance
<= 10 orderid
desc)"
we can following
sql:
select count(*) aggregate `events` inner join `addresses` on `events`.`address_id` = `addresses`.`id` having `distance` <= 10 order `id` desc
distance
not in select list.
Comments
Post a Comment