1

我有以下查询:

  $query = db_select('commerce_order', 'cord')->extend('TableSort');
  $query->join('commerce_line_item', 'li', 'cord.order_id = li.order_id');
  $query->join('commerce_product', 'item', 'item.sku = li.line_item_label');
  $query->fields('cord', array('order_id'))
        ->fields('li', array('quantity'))
        ->fields('item', array('title', 'sku'))
        ->groupBy('title')

        ->orderByHeader($header); 
  $query->addExpression('SUM(quantity)', 'quantity');      
  $result = $query->execute();

如您所见,结果按“标题”分组。其中一行如下所示:

产品 1 - 0000003 - 3.00 - 612

3.00 是数量,612 是订单 ID之一。订单 612 的数量为 2,订单 615 的数量为 1。如何在订单 ID 612 旁边显示订单 ID 615?所以该行看起来像这样:

产品 1 - 0000003 - 3.00 - 612、615

我希望你能明白,提前感谢你的帮助

解决方案

$query->addExpression("GROUP_CONCAT(li.order_id separator ', ')", 'order_id'); 
4

1 回答 1

1

在 MySQL 中,您可以添加一个表达式GROUP_CONCAT(order_id),它将是每个组的所有值的逗号分隔列表。有关详细信息,请参阅GROUP_CONCAT()手册。

如果您不使用 MySQL,则必须使用其他解决方案。GROUP_CONCAT 是 MySQL 特有的函数,但其​​他一些 RDBMS 品牌也有一些等效的方法来做同样的事情。

于 2012-10-29T15:33:05.367 回答