im mit versuchen, eine standortbasierte Ereignissuche in PHP + MySQL zu bauen (mit Laravel und seine Eloquent ORM)Unbekannte Aggregat Spalte in Klausel
Dies ist die Abfrage ich verwende:
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
Im wundern, warum dieser Fehler auftaucht, obwohl die Distanzspalte in der "Select-Anweisung" ist.
"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)"
Dies ist der PHP-Code verwende ich den Bereich auf der Basis Abfrage hinzuzufügen:
$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);
Thank you very much :)
Ich frage mich, ob die 'ONLY_FULL_GROUP_BY' Systemparameter diesen Effekt haben würden. –