cakephp组和计数

b1payxdu  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(284)

我搞不清楚这个。
我有以下三张表:-
事务处理表
身份证件
日期
列表项
产品表
身份证件
名称
价格
产品交易表
事务处理id
产品id

因此,关系如下所示-创建一个事务,然后products\u transactions表将它们连接在一起,因为一个事务可以有多个产品,而一个产品可以有多个事务。join#u表还跟踪销售金额,例如,一份报纸在事务#1中销售,数量为2(销售了2份报纸)。
现在,我想做一个mysql语句,在特定的日期间隔内查找所有售出的产品,所以得到如下结果:-
3份报纸
12杯苏打水
15杯啤酒
所以,它只是统计和总结所有销售的产品。
我认真地尝试了所有的方法-我正在使用cakephp,所以在中提供的解决方案将是有帮助的,但即使只是实现这一点的普通sql也可能会帮助我。
到目前为止,我得到的是:-

$productTransactionsTable = TableRegistry::get('products_transactions');
    $productsTransactions = $productTransactionsTable->find('all');
    $productsTransactions->matching('transactions', function ($q) {
        return $q->where([
            'transaction_date >=' => new \DateTime('-1 week'),
            'transaction_date <=' => new \DateTime('now'),
            'device_id IN' => $this->deviceIdsInDepartment(2)
        ]);
    });
    $productsTransactions->contain(['products']);

    $productsTransactions->select([
        'count' => $productsTransactions->func()->count('quantity'),
        'name' => 'products.name'
    ]);

    $productsTransactions->groupBy('products.id');

但这只会给出一个结果,把所有的东西都算进一行,就像这样:

/src/Controller/EconomyController.php (line 665)

[(int)0=>对象(cake\orm\entity){

'count' => (int) 4504,
    'name' => 'D Morgenbrød',
    '[new]' => false,
    '[accessible]' => [
        '*' => true
    ],
    '[dirty]' => [],
    '[original]' => [],
    '[virtual]' => [],
    '[errors]' => [],
    '[invalid]' => [],
    '[repository]' => 'products_transactions'

}

]
感谢您的帮助!我真的被困在这里了!
谢谢您!

rkttyhzu

rkttyhzu1#

我想你是在计算销售数量和分组的总数,所以你得到了以上的结果。我认为,你需要尝试以下方法:

$data = $query
    ->select([
      'name' => 'products.name',
      'quantity' => 'products.quantity',
    ])
    ->group('products.id');

相关问题