Группировать данные из таблицы в PHP - PullRequest
1 голос
/ 11 апреля 2019

У меня есть таблица 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 ]

2 голосов
/ 11 апреля 2019

Запустите запрос, где вы 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 голос
/ 11 апреля 2019

Я думаю, что это поможет вам

SELECT user_id,GROUP_CONCAT(CONCAT(post_id,'(',point,')') SEPERATOR ' | ') as post_points,SUM(point) as total_points FROM table_name GROUP BY user_id
1 голос
/ 11 апреля 2019

Это работа для GROUP BY и GROUP_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
0 голосов
/ 11 апреля 2019

Запрос для достижения вашего требования

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...