我有以下查询:
$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();
您可以看到结果按“标题”分组。 其中一行看起来像这样:
product1 - 0000003 - 3.00 - 612
3.00是数量,612是 订单ID之一。订单612包含数量2,订单615包含数量1.如何在订单ID 612旁边显示订单ID 615?所以行看起来像这样:
product1 - 0000003 - 3.00 - 612,615
我希望你能得到这个想法,先谢谢你的帮助
解
$query->addExpression("GROUP_CONCAT(li.order_id separator ', ')", 'order_id');
答案 0 :(得分:1)
在MySQL中,您可以添加表达式GROUP_CONCAT(order_id)
,它将是每个组中所有值的逗号分隔列表。有关详细信息,请参阅GROUP_CONCAT()上的手册。
如果您不使用MySQL,则必须使用其他解决方案。 GROUP_CONCAT是一个特定于MySQL的函数,但是其他一些RDBMS品牌也有一些相同的方法来做同样的事情。