2015-10-27 15 views
0

У меня есть таблица сообщений, как это:MySQL: группа по временной метки

enter image description here

И я хочу, чтобы сгруппировать сообщения с той же меткой времени во второй таблице. Ожидаемый результат что-то вроде этого:

enter image description here

Я использую следующий сценарий, но по какой-то причине он не работает:

<?php 
$message = mysql_query("select * from message group by member_id"); 
while($row = mysql_fetch_array($message)) { 
    @mysql_query("insert into message2 
       values 
       ('$row[time_recorded]','$row[member_id]', 
       '$row[message]')"); 
} 
+0

** Сво не работает ** Не очень полезно в качестве ошибки, как сообщения об ошибках. Получил настоящее сообщение об ошибке? – RiggsFolly

+1

Вы подавляете ошибки символом '@'. Не очень хорошая идея. – Andrew

+1

И 'GROUP BY' не хочет получать нужные вам данные, чтобы их нужно было реорганизовать. Взгляните на 'GROUP_CONCAT()' вместо – RiggsFolly

ответ

0

Использование select *, GROUP_CONCAT(message SEPARATOR ', ') AS message from message group by member_id в ваш первый выбор.

0

Похоже, проблема в том, что вы не получили доступ к вашему массиву должным образом. Вы должны получить к нему доступ с индексом или струнных (assiciative):

...

("insert into message2 values ('"+$row["time_recorded"]+"'"+",'"+$row["member_id"]+"'"+",'"+$row["message"]+"')"); 

...

(notive в "" имена полей окружены)

Смежные вопросы