SQL запросы / Запрос количества товаров только в наличии

Заметка создана: 27 февраля 2025 г.

PHP

$oQB = Core_QueryBuilder::select('shop_items.id')
   ->from('shop_items')
    ->join('shop_warehouse_items', 'shop_warehouse_items.shop_item_id', '=', 'shop_items.id')
    ->join('shop_warehouses', 'shop_warehouses.id', '=', 'shop_warehouse_items.shop_warehouse_id')
    ->where('shop_items.active', '=', 1)
    ->where('shop_items.deleted', '=', 0)
    ->where('shop_items.shop_id', '=', 3)
    ->where('shop_warehouses.active', '=', 1)
    ->where('shop_warehouses.deleted', '=', 0)
    ->groupBy('shop_items.id')
    ->having(Core_QueryBuilder::expression('SUM(shop_warehouse_items.count)'), '>', 0);


$oCore_QueryBuilder_Select = Core_QueryBuilder::select(array(Core_QueryBuilder::raw('COUNT(*)'), 'count'))
    ->from(array($oQB, 'x'));

$row = $oCore_QueryBuilder_Select->execute()->asObject()->current();

echo 'Сегодня в продаже ' . $row->count . ' ' . Core_Str::declensionNumber($row->count, 'товар', 'товара', 'товаров');