2013-09-01 4 views
0

У меня есть список задач, назначенных нескольким пользователям. Я хотел бы настроить работу cron и отправлять уведомления по электронной почте один раз в час каждому пользователю. Вот мой запрос:PHP: Объединение результатов базы данных по электронной почте

SELECT t.*, u.name, u.email 
FROM tasks t, users u 
WHERE t.date_created > DATE_SUB(NOW(), INTERVAL 1 HOUR) AND t.user_id = u.id 
ORDER BY t.date_created ASC 

Вот результат (я подрезал несколько столбцов, чтобы соответствовать лучше):

+----+-------+---------------------+---------+--------+------+--------------+ 
| id | title |  date_created | user_id | status | name |  email | 
+----+-------+---------------------+---------+--------+------+--------------+ 
| 9 | task1 | 2013-09-01 17:56:10 | 2 | active | John | [email protected] | 
| 10 | task2 | 2013-09-01 17:57:20 | 1 | active | Tim | [email protected] | 
| 11 | task3 | 2013-09-01 17:58:30 | 2 | active | John | [email protected] | 
| 12 | task4 | 2013-09-01 17:59:40 | 1 | active | Tim | [email protected] | 
+----+-------+---------------------+---------+--------+------+--------------+ 

Проблема заключается в том, что я не могу понять, как сцепить задачи, относящиеся к определенный user_id, а затем отправить их на назначенное электронное письмо. Таким образом, для приведенного выше примера будет два сообщения электронной почты послал:

  1. task1 и задача 3 (до [email protected])
  2. task2 и задачи 4 (к [email protected])
+0

я не уверен, что вы просите, но попробовать 'GROUP BY email' или' GROUP BY user_id'? – putvande

ответ

3

Try с совокупной командой GROUP_CONCAT:

SELECT GROUP_CONCAT(t.title), u.name, u.email 
FROM tasks t, users u 
WHERE t.date_created > DATE_SUB(NOW(), INTERVAL 1 HOUR) AND t.user_id = u.id 
GROUP BY u.id 

Это будет что-то вроде:

task1,task3 | John | [email protected] 
task2,task4 | Tim | [email protected] 

По умолчанию это разделенный запятыми строку, но вы можете указать другой разделитель, как это: GROUP_CONCAT(t.title,' and ')

+0

Спасибо! Вы также можете использовать 'SELECT GROUP_CONCAT (t.title) как title' для изменения заголовка столбца. – Norbert

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