Построитель запросов QueryBuilder

#
Re: Построитель запросов QueryBuilder
Уважаемые разработчики, подскажите пожалуйста как можно реализовать запрос следующего вида:
UPDATE `table` SET `uid` = CASE
    WHEN id = 1 THEN 2952
    WHEN id = 2 THEN 4925
    WHEN id = 3 THEN 1592
    ELSE `uid`
    END
WHERE table.condition <> 0
#
Re: Построитель запросов QueryBuilder
Решил вопрос путем построения запроса напрямую
$oCore_DataBase = Core_DataBase::instance()
         ->setQueryType(0)
         ->query($query);
#
Re: Построитель запросов QueryBuilder
Здравствуйте! Подскажите, пожалуйста, как еще сделать один Join (в приведенном коде строка закомментирована), нужно объединить таблицы shop_warehouse_items и shop_items по полям id и shortcut_id, чтобы работала сортировка и по ярлыкам в зависимости от выбранного склада, если есть товары на складе.

Цитата:

$Shop_Controller_Show->shopItems()
         ->queryBuilder()
         ->leftJoin('shop_warehouse_items', 'shop_warehouse_items.shop_item_id', '=', 'shop_items.id')
         // ->leftJoin('shop_warehouse_items', 'shop_warehouse_items.shop_item_id', '=', 'shop_items.shortcut_id')
         ->where('shop_warehouse_items.shop_warehouse_id', 'IN', $cookie_warehouse)
         ->where('shop_warehouse_items.count', '>', 0)
         ->groupBy('shop_items.id');
#
Re: Построитель запросов QueryBuilder
В ТДС пытаюсь получить количество элементов в текущей открытой группе.

Что не правильно в запросе?
И как получить именно число элементов, а не выборку.

$oCore_QueryBuilder_Select = Core_QueryBuilder::select('shop_items')    
      ->where('shop_group_id', '=', $Shop_Controller_Show->group)
Модератор
#
Re: Построитель запросов QueryBuilder
$oCore_QueryBuilder_Select = Core_QueryBuilder::select()
   ->select(array(Core_QueryBuilder::expression('COUNT(*)'), 'count'))
   ->from('shop_items')
   ->where('shop_group_id', '=', $Shop_Controller_Show->group);

$row = $oCore_QueryBuilder_Select->execute()->asAssoc()->result();


В $row[0]['count'] будет число. Но мне не совсем понятно зачем именно Core_QueryBuilder использовать? Если получить объект группы, то у нее в атрибутах будет и количество товаров.
Вы только что начали читать предложение, чтение которого вы уже заканчиваете.
#
Re: Re: Построитель запросов QueryBuilder
Был бы очень признателен, если бы вы подсказали, как получить объект группы.
Модератор
#
Re: Построитель запросов QueryBuilder
$oShop_Group = Core_Entity::factory('Shop_Group', $Shop_Controller_Show->group);


$oShop_Group - объект текущей группы.
Вы только что начали читать предложение, чтение которого вы уже заканчиваете.
#
Re: Построитель запросов QueryBuilder
ах, вот как это делается. Спасибо большое.
#
Re: Построитель запросов QueryBuilder
Используя запрос, выдает ошибку:

Exception: Query error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS `count` FROM `shop_items` WHERE `shop_group_id` = '627'' at line 2. Query: SELECT * AS `count` FROM `shop_items` WHERE `shop_group_id` = '627'

Модератор
#
Re: Построитель запросов QueryBuilder
uobdu,
Поправил запрос выше.
Вы только что начали читать предложение, чтение которого вы уже заканчиваете.
Авторизация