Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 本记录中每个单词的词组和频率_Mysql_Sql_Word Frequency - Fatal编程技术网

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)”