Если вы поняли, что оба условия не могут быть оба одновременно истинными, каким образом сравнение AND может быть правильным?
select *
from filter_view
where (idsearchfield = 4 and compareResearch(userValue,200) = true)
OR (idsearchfield = 6 and compareResearch(userValue,1) = true)
Это вернет 2 строки (или больше).Или вы ищете какой-нибудь способ соотнести эти две строки, чтобы они выглядели как одна строка?
Хорошо, поэтому сделайте кучу предположений, потому что вы не включили достаточно информации в свой вопрос.
filter_view
возвращает количество столбцов, один из которых представляет собой некоторую форму идентификатора записи (давайте назовем это ID
).Он также включает в себя вышеупомянутые столбцы idsearchfield
и userValue
.
На самом деле вы хотите найти те значения id
, для которых одна строка filter_view
имеет idsearchfield = 4 and compareResearch(userValue,200) = true
, а другая строка filter_view
имеет idsearchfield = 6 and compareResearch(userValue,1) = true
Общий термин для этого - «реляционное разделение».В этом простом случае и если предположить, что id / idsearchfield уникальны в этом представлении, мы можем ответить на него:
select id,COUNT(*)
from filter_view
where (idsearchfield = 4 and compareResearch(userValue,200) = true)
OR (idsearchfield = 6 and compareResearch(userValue,1) = true)
group by id
having COUNT(*) = 2
Если это не отвечает на ваш вопрос, вам придется добавить ещеинформация к вашему вопросу, включая примерные данные и ожидаемые результаты.