我有一张这样的表:
Boxes Items Weight (kgs)
==================================
101 CHICKEN 2
102 CHICKEN 3
104 CHICKEN 4
105 BEEF 3
在MySQL和PHP中,是否有可能以HTML格式的以下格式显示这些数据?
Boxes Items
=====================================
101-104 9kgs of CHICKEN
105 3kgs of BEEF
感谢。
答案 0 :(得分:2)
SELECT CASE COUNT(*)
WHEN 1 THEN boxes
ELSE CONCAT(MIN(boxes), '-', MAX(BOXES))
END AS Boxes,
CONCAT(SUM(Weight), 'kgs of ', items) AS Items
FROM yourTable
GROUP BY Items
答案 1 :(得分:0)
SELECT min(boxes),max(boxes),items,sum(weight) GROUP BY items
但是你有一些问题,你的表似乎包含文本而不是数字,你需要修复它,所以像MIN,MAX,SUM,AVG这样的功能。其次,您的箱号是(或可能是)非连续的,因此您可能希望单独处理。这个逻辑有点复杂。例如。如果你的鸡200和203以及牛肉201和204,以及202,205猪肉,如果它说200-203是鸡肉,那么它是错的。如果你有很多盒子,那么列表就会很大。这是用户界面设计的一半。
祝你好运。答案 2 :(得分:0)
$query = " select group_concat(Boxes) as box,sum(weight) as weight , item
From your_table
group by item";
$result = $mysqli->query($query);
echo "<table>
<thead>
<th>Boxes</th>
<th>Items</th>
</thead>";
while($row = $result->fetch_array())
{
echo "<tr>";
echo "<td>".$row["box"]."</td>";
echo "<td>".$row["weight"]." kg of ".$row["item"]."</td>";
echo "</tr>";
}
echo "</table>";
重量字段应为数字
答案 3 :(得分:0)
SELECT GROUP_CONCAT(Boxes), Item, SUM(Weight)
FROM Inventory
GROUP BY Item
会给你:
Boxes Items Weight
=====================================
101,102,104 CHICKEN 9
105 BEEF 3
答案 4 :(得分:0)
select concat(min(boxes), '-', max(boxes)) as boxes,
concat(sum(weight), 'kgs of ', items) as items
from tbl
group by items