php - Unknown aggregate column in having clause -


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 join addresses on events.address_id = addresses.id having distance <= 10 order id 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