Пытаюсь собрать запрос для фильтрации, относительно сравнения по второстепенной таблице, но никак не выходит.
"SELECT * FROM table1 G WHERE EXISTS (SELECT id_table1,tag FROM table2 M WHERE G.id=M.id_table1 AND M.tag=10) AND EXISTS (SELECT id_table1,tag FROM table2 M WHERE G.id=M.id_table1 AND M.tag=35) OR EXISTS (SELECT id_table1,tag FROM table2 M WHERE G.id=M.uid_table1 AND M.tag=50)"
Что я хочу получить в этом запросе. По сравнению id=id_table1 я думаю понятно, т.е. id table1 совпадает с записью id_table1 таблицы table2, то условие верно. Основной вопрос состоит в поле tag. В данном случае, есть 2 условия.
Первое условие: Вытащить записи table1, если в table2 существуют записи tag=10, tag=35 и table1.id = table2.id_table1.
Второе условие: Помимо первого условия, стоит оператор OR, т.е "или", а значит помимо первого условия, должны вытаскиваться записи и этого условия. В данном случае tag = 50 и table1.id=table2.id_table1. Что я получаю в ответе. В ответе я получаю строки, только последнего условия, т.е после OR, условия до него не считывает и записи по ним не берутся. Также, если я уберу OR и всё, что после него, я получаю данные по первому условию. В чем может быть ошибка?
Помимо всего прочего, я не думаю, что этот запрос является "хорошим", возможно есть альтернативы, но я уже перепробовал множество вариантов, но не пришёл к истине даже с таким велосипедом, хотя если бы он работал как надо, я бы успокоился. Помогите пожалуйста разобраться. Соль еще в том, что выполнить всё это надо исключительно в одном запросе.