Как вывести всех пользователей, которых я не лайнкул в таблице likes и соответствую условию
накидал так, но ничего не выводит
SELECT * FROM `users`
LEFT join `user_attributes` on user_attributes.user_id = users.id
left join likes on likes.like_user != users.id and likes.user_id = 1
where user_attributes.gender = 2 and user_attributes.city = "Витебск" and user_attributes.age BETWEEN 18 and 25 LIMIT 4
left join likes on likes.like_user != users.id and likes.user_id = 1
Очень странная строчка. Без приложенной схемы таблиц сложно понять, то мне кажется дело еще в том, что у вас есть likes.like_user и likes.user_id. И если вы связываете по users.id, то чисто по логике надо вязать с likes.user_id
SELECT * FROM `users`
LEFT join `user_attributes` on user_attributes.user_id = users.id
left join likes on likes.user_id = users.id
where user_attributes.gender = 2 and user_attributes.city = "Витебск" and likes.user_id is null and user_attributes.age BETWEEN 18 and 25 LIMIT 4
upd:
Ну тогда так.
SELECT * FROM `users`
LEFT join `user_attributes` on user_attributes.user_id = users.id
left join likes on likes.like_user = users.id
where user_attributes.gender = 2 and user_attributes.city = "Витебск" and likes.like_user is null and likes.user_id = 1 and user_attributes.age BETWEEN 18 and 25 LIMIT 4
вот так еще накидал
SELECT * FROM `users`
LEFT join `user_attributes` on user_attributes.user_id = users.id
where
user_attributes.gender = 2
and user_attributes.city = "Витебск"
and user_attributes.age BETWEEN 18 and 35
and not exists (select * from likes where likes.like_user = users.id)
LIMIT 4
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости