[英]How can I get a single value from a mysql result, if I have several rows with the same value
我有一個名為“ employees”的數據庫,其值如下:
value1 | value2 | value3
-----------------------------
employee1 | key1 | boss1
employee2 | key2 | boss1
employee3 | key3 | boss1
employee4 | key4 | boss2
employee5 | key5 | boss2
在php中,我試圖遍歷結果以獲取老板的所有雇員,但是僅獲得老板姓名一次,我嘗試使用GROUP BY
,但是在循環時,這僅顯示第一個條目:
$query = "SELECT * FROM employees WHERE value3 = 'boss1' GROUP BY value3";
$result = $db->query($query);
$foreach ($result as $row) {
echo $row["value1"] . $row["value2"] . $row["value3"];
}
結果是:
employee1 | key1 | boss1
Whitout GROUP BY
,當與foreach
循環時,它為每個條目顯示一次老板名稱
$query = "SELECT * FROM employees WHERE value3 = 'boss1'";
$result = $db->query($query);
foreach ($result as $row) {
echo $row["value1"] . $row["value2"] . $row["value3"];
}
結果是:
employee1 | key1 | boss1
employee2 | key2 | boss1
employee3 | key3 | boss1
我正在嘗試獲得如下結果:
boss1
employee1 | key1
employee2 | key2
employee3 | key3
您可以在foreach
使用if()
,如下所示:
foreach ($result as $row) {
$i++;
if ($i==1) {echo $row["value3"];}
echo $row["value1"] . $row["value2"];
}
比,您可以得到想要的結果:
boss1
employee1 | key1
employee2 | key2
employee3 | key3
您可以使用GROUP_CONCAT()
獲取每個boss
的value1
和values2
的comma
分隔(默認)列表,如下所示:
SELECT
GROUP_CONCAT(e.value1) AS value1,
GROUP_CONCAT(e.value2) AS value2,
e.value3 AS boss
FROM employees e
WHERE value3 = 'boss1'
GROUP BY value3;
這將為您提供類似於boss1
東西:
employee1,employee2,employee3 | key1,key2,key3 | boss1
編輯1:
As a html list, something like: <ul>boss1 <li>employee1</li> <li>employee2</li> <li>employee3</li> </ul> I don't need the html code, but I need to get the data in a format which I can use as a list in html
SELECT
CONCAT('<ul>',GROUP_CONCAT(CONCAT('<li>',e.value1,'<\/li>')),'<\/ul>') AS value1,
GROUP_CONCAT(e.value2) AS value2,
e.value3 AS boss
FROM employees e
WHERE value3 = 'boss1'
GROUP BY value3;
注意 :-您應該使用服務器端語言來實現。 並使用第一個查詢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.