I basically want to return all uses if there distance is less than the radius which is fine. But if the meta data that is joined to the user doesn't exists, the result does not get returned.
Heres my query:
SELECT main.* FROM
(
SELECT
users.*,
gender.meta_value AS `gender`,
sexual_orientation.meta_value AS `sexual_orientation`,
relationship_status.meta_value AS `relationship_status`,
interest_1.meta_value AS `interest_1`,
interest_2.meta_value AS `interest_2`,
interest_3.meta_value AS `interest_3`,
interest_4.meta_value AS `interest_4`,
interest_5.meta_value AS `interest_5`,
interest_6.meta_value AS `interest_6`,
address.address_line_1,
address.address_line_2,
address.town,
address.county,
address.postcode,
address.country,
address.longitude,
address.latitude,
( 3959 * acos( cos( radians( {$usersLatitude} ) ) * cos( radians( address.latitude ) ) * cos( radians( address.longitude ) - radians( {$usersLongitude} ) ) + sin( radians( {$usersLatitude} ) ) * sin( radians( address.latitude ) ) ) ) AS distance
FROM
`users`
JOIN
`storage_varchars` AS `gender`
ON
gender.user_id = users.id AND gender.meta_name = 'gender'
JOIN
`storage_varchars` AS `sexual_orientation`
ON
sexual_orientation.user_id = users.id AND sexual_orientation.meta_name = 'sexual_orientation'
JOIN
`storage_varchars` AS `relationship_status`
ON
relationship_status.user_id = users.id AND relationship_status.meta_name = 'relationship_status'
JOIN
`storage_varchars` AS `interest_1`
ON
interest_1.user_id = users.id AND interest_1.meta_name = 'interest_1'
JOIN
`storage_varchars` AS `interest_2`
ON
interest_2.user_id = users.id AND interest_2.meta_name = 'interest_2'
JOIN
`storage_varchars` AS `interest_3`
ON
interest_3.user_id = users.id AND interest_3.meta_name = 'interest_3'
JOIN
`storage_varchars` AS `interest_4`
ON
interest_4.user_id = users.id AND interest_4.meta_name = 'interest_4'
JOIN
`storage_varchars` AS `interest_5`
ON
interest_5.user_id = users.id AND interest_5.meta_name = 'interest_5'
JOIN
`storage_varchars` AS `interest_6`
ON
interest_6.user_id = users.id AND interest_6.meta_name = 'interest_6'
JOIN
`payments` AS `address`
ON
address.user_id = users.id
) AS `main`
WHERE
`main`.distance < {$radius}
ORDER BY
`main`.distance
thanks in advance.