使用PHP

时间:2019-04-11 10:51:19

标签: php mysql mysqli

我有一个这样的表sql

post_id    point    user_id
5          1.0      1
6          1.5      1
7          0.0      2
8          1.5      3
9          1.0      3
...

我想将数据打印到其中(按user_id将帖子分组)

user_id        post_id(point)                     total point
1              5(1.0)  |  6(1.5)    | ...         2.5
2              7(0.0)  |            | ...         0.0
3              8(1.5)  | 9(1.5)     | ...         3.0
...

我尝试了类似的方法,但是它返回了数组

SELECT * FROM table WHERE post_id = ?

很抱歉,这是一个愚蠢的问题,但我是MySQL的新手。

4 个答案:

答案 0 :(得分:2)

GROUP BY user_id处运行查询。将GROUP_CONCAT()CONCAT()一起使用以生成您的积分/帖子列。 CONCAT()将字符串放在一起以形成postID (points)格式,GROUP_CONCAT()将所有按该组分组的值(在这种情况下为user_id)放到一个由分隔符分隔的字符串中|

SELECT user_id, 
       GROUP_CONCAT(CONCAT(post_id, '(', points, ')')  SEPARATOR ' | ') as point_id_posts,
       SUM(points) as totalPoint
FROM table
GROUP BY user_id

答案 1 :(得分:1)

这是GROUP BYGROUP_CONCAT()的工作。尝试这样的事情。

https://www.db-fiddle.com/f/4sVVgGk6SyEnFE4C3emMp9/0

SELECT user_id,
       GROUP_CONCAT( CONCAT(post_id, '(', point, ')') ORDER BY post_id SEPARATOR ' | ' ),
       SUM(point) 
  FROM tbl
 GROUP BY user_id

答案 2 :(得分:1)

我认为这会对您有所帮助

cell.setBackgroundColor(BaseColor.GRAY);
cell.setHorizontalAlignment(Element.ALIGN_LEFT);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setUseAscender(true);

答案 3 :(得分:0)

查询以实现您的要求

SELECT user_id,
       GROUP_CONCAT( CONCAT(post_id, '(', point, ')') ORDER BY post_id SEPARATOR ' | ' ) as post_id_point,
       SUM(point) 
  FROM tbl
 GROUP BY user_id