У меня есть поисковая система и таблица пользователей блоков. Я не хочу, чтобы заблокированные пользователи появлялись в поиске, поэтому я попытался:
select c.nome, c.user, c.id from users c
where (c.id not in (select 'block' from block where user = '1'))
and c.user like '%uk%' OR c.nome like '%uk%'
block table У меня есть автоинкремент id, пользователь (который блокирует), блокирует (кто заблокирован) и дату. Поэтому я не хочу получать результаты при поиске у пользователей, заблокированных пользователем '1'.
Проблема в том, что она не работает, она также блокирует пользователей.
При смешивании AND
и OR
используйте круглые скобки. Также вы путаете блок и пользователь в своем подзапросе.
select nome, id
from users
where id not in (select blocked_user from block where blocking_user = 1)
and (user like '%uk%' OR nome like '%uk%');
OR c.nome like '%uk%'
если яOR c.nome like '%uk%'
это работает. но мне нужно получить поиск по имени тоже.