正确显示MySQL“GROUP BY”结果

时间:2011-04-12 12:37:41

标签: php mysql group-by

我似乎无法正确显示此查询。这是代码:

$select_stats = "SELECT 
  c.ResponderID
  , COUNT(MsgID)
  , a.SubscriberID
  , CanReceiveHTML
  , EmailAddress 
FROM InfResp_msglogs AS a
  , InfResp_subscribers AS b
  , InfResp_responders AS c 
WHERE b.CanReceiveHTML = 1 
  AND c.owner='".$_SESSION['logged_user_id']."' 
  AND c.ResponderID = b.ResponderID 
  AND b.SubscriberID = a.SubscriberID 
GROUP BY c.ResponderID";

//echo $select_result;

while($row = mysql_fetch_array($select_result))
{
    $messages = $row['COUNT(MsgID)'];
    $campaign = $row['ResponderID'];
    $subscriber = $row['SubscriberID'];
    $subscriber_email = $row['EmailAddress'];

    echo "<br>Campaign = ". $campaign ."
          <br>Sent emails count = ". $messages ."
          <br>Subscriber Nr. = ". $subscriber ."
          <br>Subscriber Email = ". $subscriber_email ."<br>";
     }  

这是输出:

Campaign = 10
Sent emails count = 109
Subscriber Nr. = 95
Subscriber Email = timothy@gmail.com

Campaign = 11
Sent emails count = 16
Subscriber Nr. = 97
Subscriber Email = alan@yahoo.com

由于在第10号广告系列下有3个不同的订阅者,在数据库中有1个广告系列在第11号广告系列中(当然每个都有自己的电子邮件地址),我希望输出为:

Campaign = 10
Sent emails count = 109
Subscriber Nr. = 92
94
95
Subscriber Email = timothy@gmail.com
anthony@yahoo.com
josie@hotmail.com

Campaign = 11
Sent emails count = 16
Subscriber Nr. = 97
Subscriber Email = alan@yahoo.com

感谢。

1 个答案:

答案 0 :(得分:3)

您需要group_concat

... SELECT c.ResponderID, COUNT(MsgID), a.SubscriberID, CanReceiveHTML, 
group_concat(EmailAddress ORDER BY EmailAddress DESC SEPARATOR ' ') ... 
相关问题