Правильно отображать результаты MySQL "GROUP BY" - PullRequest
0 голосов
/ 12 апреля 2011

Я не могу правильно отобразить этот запрос.Вот код:

$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 три разных подписчика, а в базе данных № 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 Ответ

3 голосов
/ 12 апреля 2011

Вам нужно group_concat для этого:

... SELECT c.ResponderID, COUNT(MsgID), a.SubscriberID, CanReceiveHTML, 
group_concat(EmailAddress ORDER BY EmailAddress DESC SEPARATOR ' ') ... 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...