SQLite и If () условие - PullRequest
       17

SQLite и If () условие

2 голосов
/ 07 сентября 2011

У меня есть запрос MySQL, который я пытаюсь запустить в SQLite.Я обнаружил, что условие IF не работает в SQLite и должно быть преобразовано в CASE.Поскольку запрос MySQL достаточно велик, чтобы иметь обзор, я надеялся, что кто-нибудь покажет мне, как это должно быть сделано.В одном из многих других запросов MySQL я должен преобразовать в SQLite.

Как только я увижу, как это должно быть сделано в запросе, который я использую (потому что я знаком с ним), я предполагаю, что справлюсьдля остальных.Вот MySQL, который должен работать в SQLite:

select 
p.products_model, 
pd.products_name, 
m.manufacturers_name, 
p.products_quantity, 
p.products_weight, 
p.products_image, 
p.products_id, 
p.manufacturers_id, 
p.products_price, 
p.products_tax_class_id, 
IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price,
IF(s.status, s.specials_new_products_price, p.products_price) as final_price 
from 
products_description pd, 
products p 
left join manufacturers m on p.manufacturers_id = m.manufacturers_id 
left join specials s on p.products_id = s.products_id, 
products_to_categories p2c 
where 
p.products_status = "1" and 
p.products_id = p2c.products_id and 
pd.products_id = p2c.products_id and 
pd.language_id = "1" and 
p2c.categories_id = "10"

1 Ответ

6 голосов
/ 07 сентября 2011

Изменение:

IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price,
IF(s.status, s.specials_new_products_price, p.products_price) as final_price 

до

CASE
    WHEN s.status <> 0 AND s.status IS NOT NULL
    THEN s.specials_new_products_price
    ELSE NULL
END AS specials_new_products_price,
CASE
    WHEN s.status <> 0 AND s.status IS NOT NULL
    THEN s.specials_new_products_price
    ELSE p.products_price
END AS final_price
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...