У меня есть следующий запрос, точнее говоря, параметризованный запрос SQL:
select * from `products`
where (exists (select * from `productslocation` where `products`.`Id` = `productslocation`.`Product_Id` and `Country_Id` = ?) and
exists (select * from `productprices` where `products`.`Id` = `productprices`.`Products_Id` and `Price` >= ?)
and `Organization_Id` = ? and `name` like ? or `Description` like ?) and `Status` = ?
Этот запрос извлекает только те продукты, которые существуют country
, price
, используя оператор WHERE EXISTS
.
Если он был найден, он возвращает TRUE
для первого подзапроса, затем работают оставшиеся два запроса WHERE
.Первый подзапрос возвращает TRUE
, второй дает TRUE
, потому что подзапрос также прав.result = TRUE * TRUE = TRUE
.Но это неверный результат.
Проблема в том, что нужно использовать два внутренних запроса WHERE для результата из WHERE EXISTS
.
Означает ли это, что мне нужно заменить WHERE EXISTS
ON JOIN'S
?Или можно изменить запрос выше?