Например,
У меня есть таблицы Пользователь и UserColor
Каждый пользователь может иметь много цветов.
Iхотите получить результат "все пользователи, кроме тех, которые любят красный или синий".
Есть ли способ сделать это без необходимости делать два вложенных выбора?
то есть
Select * from User where id not in (
Select user_id from UserColor where color = Red OR color = Blue )
?
Я спрашиваю об этом, потому что мне нужно также отфильтровать пользователей с помощью свойства Letter = A.
Я могу просто поместить букву Where = A в конце, однако это будет означать, что мне нужносделать объединение для ВСЕХ пользователей с их цветами, прежде чем отфильтровать небольшую группу A.
Так что я бы лучше сначала отфильтровал пользователей с помощью A, а затем по цвету.
Таким образом, яделать что-то вроде:
Select * from User where id not in (
Select user_id from UserColor
Left join User ON User.id = user_id
where color == Red OR color = Blue AND User.letter = 'A')
AND letter = 'A'
задница кажется повторяющейся, чтобы фильтровать 2 раза по букве A (один, чтобы получить пользователей, которые соответствуют хотя бы один раз, а другой, чтобы получить всех пользователей, которые не 'т в этой группе)