如何将两个MySQL行合并为一个并使用PHP在表中显示它们?

Mic*_*ael 11 php mysql

我有一张桌子"exercise_results".人们在开始时投入他们的结果,然后在两个月之后将他们的结果放在他们的结果中,看看他们有多少改进.它们的开始集的exercise_type_id为"1",而结束集的exercise_type_id为"2".

我需要一种方法将其显示到HTML表中,如下所示:

通常我会这样做

一个foreach循环,但这是单行.我在将两行合并为一行时遇到了麻烦.我想这可能就像某种MySQL加入一样简单?我们通过person_unique_id识别每个人.

这是我的领域:

id | person_unique_id | person_name | exercise_type_id | mile_running_time | bench_press_weight_lbs | squat_weight_lbs | date_of_exercise_performed
Run Code Online (Sandbox Code Playgroud)

示例行:

1 | J123 | John Smith | 1 | 8  | 200 | 300 | 2010-03-20
2 | J123 | John Smith | 2 | 7  | 250 | 400 | 2010-05-20
3 | X584 | Jane Doe   | 1 | 10 | 100 | 200 | 2010-03-20
4 | X584 | Jane Doe   | 2 | 8  | 150 | 220 | 2010-05-20
Run Code Online (Sandbox Code Playgroud)

我尝试了一些解决方案,但我迷路了.任何帮助都会很棒.谢谢!

编辑:

在回应下面的评论时,我希望得到一些数据:

array  0 => 
array
  'Exercise' => 
    array
      'person_unique_id' => string 'J123'
      'person_name' => string 'John Smith'
      'begin_mile_running_time' => string '8'
      'end_mile_running_time' => string '7'
1 => 
array
  'Exercise' => 
    array
      'person_unique_id' => string 'X584'
      'person_name' => string 'Jane Doe'
      'begin_mile_running_time' => string '10'
      'end_mile_running_time' => string '8'
Run Code Online (Sandbox Code Playgroud)

lay*_*alk 17

您可以使用GROUP_CONCAT()来获得两行结果,如下所示:

SELECT person_unique_id, person_name, 
       group_concat( mile_running_time ) AS miles,  
       group_concat( bench_press_weight_lbs ) AS bench, 
       GROUP_CONCAT( squat_weight_lbs ) AS squat
FROM exercise_result
GROUP BY person_unique_id
Run Code Online (Sandbox Code Playgroud)

你的结果将是:

J123  |  John Smith  |  8,7  |  200,250  |  300,400

X584  |  Jane Doe  |  10,8  |  100,150  |  200,220
Run Code Online (Sandbox Code Playgroud)

然后你可以使用php explode和结果字段来获得每种类型的结果.