I have a charities table with fields: charity, postcode
and a postcodes table with fields: postcode, lat, lng
I want to POST a postcode from a web page and find the nearest charities
I’m something of a mysql beginner so I’m a bit lost, but I’ve been trying various ideas with joins and sub queries none of which work (I either get syntax errors or ‘Operand should contain 1 column’ with variations on the code below) I’ve got
Select charity,postcode,
(
(Select lat as lat2, lng as lng2
from postcodes
where postcode='WN8'
)
3959 * acos( cos( radians(lat2) ) * cos( radians( lat ) ) *
cos( radians( lng ) - radians(lng2) ) +
sin( radians(lat2) ) * sin( radians( lat ) ) )
)
AS distance
FROM postcodes
JOIN Charities on charities.postcode=postcodes.postcode
HAVING distance < 30 ORDER BY distance LIMIT 0 , 30;
I’ve seen lots of examples on here where lat2 and lng2 are obtained from posted values but not from a table in the db.
p.s 'where postcode='WN8' in the example is just for testing
Not sure what error you are getting with the above SQL.
However try this minor tweak and let us know what errors you get
If you want to know the nearest 30 postcodes and the distances from each charity then something like this would do the job (not tested so excuse any typos).
This should find you the charities within 30 miles