Mysql 本记录中每个单词的词组和频率
这是我的数据库 表:Mysql 本记录中每个单词的词组和频率,mysql,sql,word-frequency,Mysql,Sql,Word Frequency,这是我的数据库 表: item: item_id, name order: order_id orderform: order_id, item_id, quantity 表中的数据 item_id name 1 ball 2 cap 3 bat order_id 1 2 3 4 order_id item_id quantity 1 1 2 1 3 4 2 1 1 3
item: item_id, name
order: order_id
orderform: order_id, item_id, quantity
表中的数据
item_id name
1 ball
2 cap
3 bat
order_id
1
2
3
4
order_id item_id quantity
1 1 2
1 3 4
2 1 1
3 2 3
3 1 2
3 3 1
4 1 2
目前,我正在使用以下sql查询:
SELECT order_id, group_concat(name)
FROM order
LEFT JOIN orderform
ON order.order_id = orderform.order__id
LEFT JOIN item
ON orderform.item_id = item.item_id
GROUP BY order.order_id
这给了我这种感觉
order_id name
1 ball,ball,bat,bat,bat,bat
2 ball
3 cap,cap,cap,ball,ball,bat
4 ball,ball
但我希望它看起来像这样
order_id name
1 2 x ball,4 x bat
2 ball
3 3 x cap,2 x ball,bat
4 2 x ball
您必须执行两个步骤: 首先:解析项目并创建文本
SELECT
orderform.order_id AS order_id,
CONCAT(orderform.quantity, ' x ',item.name) AS txt
FROM order orderform
LEFT JOIN item ON orderform.item_id = item.item_id
然后按顺序分组
SELECT
order_id,
group_concat(txt) AS txt
FROM (
SELECT
orderform.order_id AS order_id,
CONCAT(orderform.quantity, ' x ',item.name) AS txt
FROM order orderform
LEFT JOIN item ON orderform.item_id = item.item_id
) AS baseview
GROUP BY order_id
非常感谢你!完全符合我的要求。我还有一个问题。orderform中的某些行可能有两行相同的订单id和相同的产品,这将导致显示select,如“2 x ball,2 x ball”。有没有一种方法可以像这个“4X球”一样展示相同种类的物品。感谢不知什么原因,一切都乘以了9。因此,让我们假设记录应该显示“2 x球”,它显示“2 x球2 x球2 x球2 x球2 x球2 x球2 x球2 x球2 x球2 x球2 x球2 x球2 x球2 x球”已解决。我只需要将DISTINCT应用于group_concat函数“group_concat(DISTINCT txt)”