MySql Query / PHP以相同的客户名称获取所有列值

时间:2014-08-09 12:35:59

标签: php mysql

我不确定如何为标题说出问题,但这就是我要做的事情。我有一张桌子:

表1

-----------------------------------
| customer |   phone  | productid |
-----------------------------------
|   John   | 123-4567 |  P123     |
-----------------------------------
|   Bam    | 345-6789 |  P033     |
-----------------------------------
|   John   | 123-4567 |  P432     |
-----------------------------------
|   Gin   | 444-1234 |  P543     |
-----------------------------------
|   Bam    | 345-6789 |  P320     |
-----------------------------------
|   Bam    | 345-6789 |  P675     |
-----------------------------------

我正试图得到这样的结果:

客户:约翰 电话: 123-4567 产品: P123,P432

客户: Bam 电话: 345-6789 产品: P033,P320,P675

客户:杜松子酒 电话: 444-1234 产品: P543

我不确定是否有一个mysql查询可以让我得到这个结果,但我确实尝试在PHP上做,并且不知道从哪里开始。下面是我目前使用的php代码:

$sql = "SELECT * FROM table1 ORDER BY user";
$result = mysql_query($sql);

while ($row = mysql_fetch_array($result)) {

    echo '</br>Customer: '.$row['customer'].'</br>Phone: '.$row['phone'].'</br>Products: '.$row['productid'].'</br>';
}

我知道我需要在while语句中添加一个代码,“当它是同一个用户时,将productid连接到一个变量”,但我无法将其转换为代码。

希望这是有道理的。提前谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用GROUP_CONCAT

SELECT 
  customer, 
  phone, 
  GROUP_CONCAT(productid SEPARATOR ', ') as product_ids
FROM table1
GROUP BY customer