我想通过选择来组合多个值。 我有这个:
| id | student_id | key | value |
| 1 | 1 | dad_name | Leonel |
| 2 | 1 | mom_name | Mireya |
| 3 | 1 | school | Agape |
并将其转换为:
| id | student_id | dad_name | mom_name | school |
| 1 | 1 | Leonel | Mireya | Agape |
答案 0 :(得分:1)
一种方式(尽管不是最好的方式)是:
SELECT r.id, r.student_id, r.value as dad_name, r2.value as mom_name, r3.value as school
FROM table r
JOIN table r2 ON r.student_id=r2.student_id
JOIN table r3 ON r.student_id=r3.student.id
WHERE r.key='dad_name'
AND r2.key='mom_name'
AND r3.key='school'
答案 1 :(得分:1)
您可以自己加入表格。我们的$ table是你的表的名字;那么查询会看起来像这样
"
SELECT t1.student_id, t2.value AS dad_name,
t3.value AS mom_name, t4.value AS school
FROM $table AS t1 LEFT JOIN ($table AS t2, $table AS t3, $table AS t4)
ON (t2.student_id = t1.student_id AND t3.student_id = t1.student_id
AND t4.student_id = t1.student_id)
"
答案 2 :(得分:0)
这并非严格要求,但根据tadman的评论,在应用层进行此类转换可能会更清晰。
例如......
$output = [];
foreach($resultset as $row) {
$output[$row->student_id]->{$row->key} = $row->val;
}
这将导致像这样的输出
Array
(
[1] => stdClass Object
(
[dad_name] => Leonel
[mom_name] => Mireya
[school_name] => Agape
)
)