У меня есть 2 таблицы документов и гео
таблица документов:
id category company headorg type
1 1 20 4 aaa
2 1 null 4 bbb
3 null 20 4 ccc
4 null 20 4 ddd
5 2 null 4 bbb
6 null 20 4 ccc
таблица гео:
id category investor headorg
1 1 20 4
2 1 21 4
3 1 22 4
4 2 21 4
5 2 22 4
Теперь мне нужно запросить таблицу документов на основе передачиcompany = 20, а также нужно проверить таблицу географических данных на основе категории.
Здесь docs.company - это не что иное, как geo.investor
Например, взять категорию 1, В таблице фильтрации гео для категории1 у нас есть инвестор 20, поэтому мы должны получить документы в формате 1,2, даже если компания не имеет значения в таблице документов.Также, если категория для компании 20 пуста, т. Е. Записи документов 3,4,6
Поэтому мой запрос должен вернуть мне 1,2,3,4,6
Я написал это, но получил всезаписи 1,2,3,4,5,6
SELECT * FROM doc d where (company is null or company = 20)
and 20 in ( select geo.investor from geo join doc d on d.category = geo.category)