У меня возникли проблемы с получением синтаксиса для инструкции SELECT MySQL с подзапросом в инструкции IF.Синтаксис для оператора SELECT MySQL с подзапросом в инструкции IF
EDIT
мне нужно включить подзапросов в запросе дб, если были указаны конкретные значения. В этом конкретном примере, если они указали элемент, то только выборка строк, где Item и Price также соответствуют определенным значениям.
SELECT * FROM Products WHERE Products.Color = :Colors_like
AND IF(Item = IS NOT NULL OR Item != ''
(Item = :Item AND Products.Price <= (SELECT $MaxPrice_Item FROM Lifestyle WHERE User_id = $User_id))
)
Я включил упрощенный фрагмент ниже с закодированными значениями
Это работает правильно:
SELECT * FROM Products WHERE Color = 'Black'
AND IF (Item = 'Dresses', 1, 0) = 1
Это не работает (если деталь = платья, он должен проверить цену)
SELECT * FROM Products WHERE Color = 'Black'
AND IF (Item = 'Dresses' (SELECT * FROM Products WHERE Price < '$300'), 1, 0) = 1
Я пробовал каждый формат, о котором я мог думать, но я не могу заставить это заявление работать.
«Это не работает» --- что он должен делать на самом деле? Запрос полностью сломан, и трудно догадаться, что вы хотели выразить с ним. PS: 'WHERE Price <'$ 300'' действительно ли вы храните цены как префиксные строки' $ 'char? – zerkms
@zerkms - Я только уточнил, что он должен делать :-) (Извинения, если я не был ясен) –
Это еще не ясно. Попробуйте объяснить язык домена. Например: мне нужно выбрать продукты, которые являются черными и ... и ... PS: вы все еще не ответили о ценах PPS: 'IF (Item = 'Dresses', 1, 0) = 1' - это не делает смысл. Таким образом, попытка решить его «подобным образом» ошибочна по дизайну. – zerkms