Здравствуйте. Я пытаюсь получить результаты из базы данных на основе расстояния, а также не хочу включать те строки, в которых определенные идентификаторы существуют в моих возвращаемых данных. Но проблема в том, что если я сделаю группу к тому времени, то она игнорирует условие WHERE
Вот мой запрос
SELECT ( 3959 * ACOS( COS( RADIANS(31.45583995) ) * COS( RADIANS( Room.lat ) )
* COS( RADIANS(Room.long) - RADIANS(73.12997248)) + SIN(RADIANS(31.45583995))
* SIN( RADIANS(Room.lat)))) AS distance,
`Room`.*, `User`.*, `Room`.`id`
FROM `bring_messenger`.`room` AS `Room`
LEFT JOIN `bring_messenger`.`user` AS `User` ON (`Room`.`user_id` = `User`.`id`)
JOIN `bring_messenger`.`room_member` AS `RoomMember` ON (`RoomMember`.`room_id` = `Room`.`id`)
WHERE ((`Room`.`user_id` NOT IN (2)) OR (`RoomMember`.`member_id` NOT IN (2)))
GROUP BY distance
HAVING distance < 100
ORDER BY `distance` ASC
Проблема в том, что он дает мне данные, которые включают user_id = 2
. Но если я удаляю условие GROUP BY
, то условие работает успешно.
Поэтому, пожалуйста, помогите, как я могу не включать определенные строки, а также сортировать результаты по расстоянию.