我正在尝试使用SaleID组织我的数据库中的所有数据,这就是我现在拥有数据库的方式。 SalesID和ProductID是外键。
TID ....... SaleID ......... ProductID
.... 1 ............... 1 ....................... 1
.... 2 ............... 1 ....................... 4
.... 3 ............... 1 ....................... 6
.... 4 ............... 2 ....................... 3
.... 5 ............... 3 ....................... 1
.... 6 ............... 3 ....................... 5
.... 7 ............... 4 ....................... 3
.... 8 ............... 5 ....................... 3
.... 9 ............... 5 ....................... 6
我想创建一个表格,显示所有这样组织的数据。不存储到数据库中只是为了输出这些信息。
SaleID ........产品
......... 1 ....... 1,4,6
......... 2 ....... 3
......... 3 ....... 1,5-
......... 4 ....... 3
......... 5 ....... 3,6-
我试图用多维数组做这个,但每次迭代它都添加了一个新行,并显示与第一个表无法修改或添加到过去行完全相同的东西。
这是我现在的代码
<?php
mysql_connect('localhost','root','');
mysql_select_db('mydb');
$query="SELECT * FROM prodsales ORDER by salesID ASC";
$result = mysql_query($query);
echo "<table border='1'>";
while($row = mysql_fetch_array($result)){
echo "<tr><td>" . $row['salesID'] . "</td><td>" . $row['productID'] . "</td></tr>";
}
echo "</table>";
mysql_close();
?>
答案 0 :(得分:0)
SELECT SaleID , GROUP_CONCAT( DISTINCT ProductID SEPARATOR ',' ) AS PID FROM prodsales GROUP BY SaleID
请尝试这个希望它可以帮助你得到你想要的东西
答案 1 :(得分:0)
MySQL有一个可爱的group_concat函数,正如Abhik在评论中发表的那样。您可以像这样使用它来获取您想要的不同行,并使其他匹配行以逗号(或其他任何其他)分隔列表:
select
saleID,
group_concat(productID)
from
prodsales
group by
saleID
order by
saleID
这将以您想要的格式返回行,然后您可以直接输出到表中。