MYsql GROUP_CONCAT 3 列在 PHP 中执行
MYsql GROUP_CONCAT with 3 columns execute in PHP
我的查询有可能 return 超过 1 个结果的子选择:
SELECT
t1.group,
(SELECT GROUP_CONCAT(t3.id,','t3.name,','t3.age SEPARATOR('---') FROM table t3 WHERE t3.id= t2.id GROUP BY t3.id )) AS names,
FROM
table1 AS t1
JOIN table2 AS t2 ON t1.id = t2.id
WHERE
t1.id = 1
我设法使用嵌套的 foreach 显示结果,但结果有点混乱。我在想如何拥有这个。
可能的结果
GROUP | ID | NAME | AGE |
--------|----|------|-----|
| 1 | John | 20 |
GROUP1 | 2 | Phil | 22 |
| 3 | Dave | 24 |
--------|----|------|-----|
| 4 | Jan | 20 |
GROUP2 | 5 | Luke | 22 |
以上将显示在 html table using php.
我认为最简单的方法是按组查询顺序,然后在 php 中查看如何管理它:
SELECT
t1.group,
t3.id,
t3.name,
t3.age
FROM
table1 AS t1
LEFT JOIN table2 AS t2 ON t1.id = t2.id
LEFT JOIN table3 t3 ON t3.id= t2.id
WHERE
t1.id = 1
ORDER BY t1.group
然后在php显示数据的时候,只有组名改变时才显示。
示例代码:
if ($result->num_rows > 0) {
$lastGroup = "";
// output data of each row
while($row = $result->fetch_assoc()) {
if($lastGroup == $row["group"]){
$row["group"]= "";
}
else{
$lastGroup = $row["group"] ;
}
echo $row["group"]. " || "
. $row["id"]. " || " . $row["name"]. " || " . $row["age"]."<br>";
}
} else {
echo "0 results";
}
这当然是一个示例,具体取决于您希望如何显示数据,但我认为您在这里已经了解了总体思路。
我的查询有可能 return 超过 1 个结果的子选择:
SELECT
t1.group,
(SELECT GROUP_CONCAT(t3.id,','t3.name,','t3.age SEPARATOR('---') FROM table t3 WHERE t3.id= t2.id GROUP BY t3.id )) AS names,
FROM
table1 AS t1
JOIN table2 AS t2 ON t1.id = t2.id
WHERE
t1.id = 1
我设法使用嵌套的 foreach 显示结果,但结果有点混乱。我在想如何拥有这个。 可能的结果
GROUP | ID | NAME | AGE |
--------|----|------|-----|
| 1 | John | 20 |
GROUP1 | 2 | Phil | 22 |
| 3 | Dave | 24 |
--------|----|------|-----|
| 4 | Jan | 20 |
GROUP2 | 5 | Luke | 22 |
以上将显示在 html table using php.
我认为最简单的方法是按组查询顺序,然后在 php 中查看如何管理它:
SELECT
t1.group,
t3.id,
t3.name,
t3.age
FROM
table1 AS t1
LEFT JOIN table2 AS t2 ON t1.id = t2.id
LEFT JOIN table3 t3 ON t3.id= t2.id
WHERE
t1.id = 1
ORDER BY t1.group
然后在php显示数据的时候,只有组名改变时才显示。
示例代码:
if ($result->num_rows > 0) {
$lastGroup = "";
// output data of each row
while($row = $result->fetch_assoc()) {
if($lastGroup == $row["group"]){
$row["group"]= "";
}
else{
$lastGroup = $row["group"] ;
}
echo $row["group"]. " || "
. $row["id"]. " || " . $row["name"]. " || " . $row["age"]."<br>";
}
} else {
echo "0 results";
}
这当然是一个示例,具体取决于您希望如何显示数据,但我认为您在这里已经了解了总体思路。