SELECT SQL_CALC_FOUND_ROWS *, ACOS( SIN( :latitude * ( PI( ) /180 ) ) * SIN( latitude * ( PI( ) /180 ) ) + COS( :latitude * ( PI( ) /180 ) ) * COS( latitude * ( PI( ) /180 ) ) * COS( (longitude * ( PI( ) /180 ) ) - ( :longitude * ( PI( ) /180 ) ) )) AS distance FROM registration WHERE latitude BETWEEN : resLatLeft AND : resLatRight AND longitude BETWEEN : resLonLeft AND : resLonRight AND published = 1 ORDER BY distance ASC LIMIT 0, 12
Chce do tego dodac:
WHERE distance BETWEEN :distanceFrom AND :distanceTo
Niestety nie moge uzywac wartosci wyliczanej w locie jako warunku w WHERE, moge natomiast uzyc HAVING ale problem polega na tym, ze SQL_CALC_FOUND_ROWS zwraca mi liczbe wierszy ignorujac klauzule HAVING.
Czy jest jakis sposob zeby to obejsc? Czy musze tworzyc jakas tablice tymczasowa i dopiero z niej wybierac?