2016-10-05 1 views
0

я следующий выбор в моей модели:Codeigniter активная запись СЛУЧАЙ работает в выбрать, но не может заказать по своим параметрам

$this->db->select("*, product.id as id, product.price as price, attribute.price as att_price, CASE WHEN(attribute.price > 0) THEN attribute.price ELSE product.price END as newprice"); 

Когда я получать результаты, которые я могу повторить $product->newprice и он хорошо работает. Проблема в том, что я хочу заказать результаты по цене продукта или цене атрибута, если он существует. Я могу легко заставить его работать, используя аналогичные CASE в order_by(). Но вместо этого я хочу пропустить его и использовать там newprice.

Когда я пытаюсь $this->db->order_by("newprice ASC") я получаю следующее сообщение об ошибке в:

Error Number: 105

Unknown column 'newprice' in 'where clause'

Я не могу понять, почему я не могу использовать newprice в порядке по функции, но у меня есть NewPrice, когда я принести результаты ,

ответ

0

Просто используйте CASE WHEN заявление в (), как показано ниже, поставить весь запрос в температуре:

$this->db->select("(*, product.id as id, product.price as price, attribute.price as att_price, (CASE WHEN(attribute.price > 0)     
THEN attribute.price ELSE product.price END;) as newprice) as temp"); 
$this->db->order_by("temp.newprice ASC")