У меня есть запрос, чтобы получить общее количество продолжительности, когда пользователь стал внутренним, чм, статус записи. Я хотел спросить, можно ли отсортировать его по общему количеству продолжительности, когда он пересчитывается из другой таблицы? Пожалуйста, посмотрите мою структуру запросов, чтобы понять дальше.
Пользователь может быть назначен во многих статусах. Может быть, он был во внутреннем статусе 4 раза, rc 2 раза и т. Д.
$sql = "SELECT * FROM user WHERE creation_date < NOW()";
$qry = mysql_query($sql);
$res = array();
while($row=mysql_fetch_assoc($qry))
{
$res[] = $row;
$res['duration'] = getTimeDuration($row['userId'],$row['startDate']);
}
function getTimeDuration($userId,$startDate);
{
$sql = "SELECT statusDate FROM userStatus WHERE userId=$userId AND status IN('internal','hm','rec') ORDER BY statusDate DESC
$qry = mysql_query($sql);
While($row=mysql_fetch_assoc($qry))
{
$diff = $row['statusDate']-$startDate;
$duration = $duration + $diff;
}
return $duration;
}
Это структура таблицы
Таблица пользователей
+----------+--------------+
| userId | startDate |
+----------+--------------+
| 1 | 2011-09-18 |
+----------+--------------+
| 2 | 2012-05-25 |
+----------+--------------+
Таблица userStatus
+----------+--------------+--------------+
| userId | statusDate | status |
+----------+--------------+--------------+
| 1 | 2012-09-18 | internal |
+----------+--------------+--------------+
| 1 | 2012-10-18 | hm |
+----------+--------------+--------------+
| 1 | 2012-10-25 | rec |
+----------+--------------+--------------+
| 1 | 2012-11-05 | manager |
+----------+--------------+--------------+
| 1 | 2012-11-15 | assistant |
+----------+--------------+--------------+
| 1 | 2012-12-05 | internal |
+----------+--------------+--------------+
| 2 | 2012-10-05 | rec |
+----------+--------------+--------------+
| 2 | 2012-11-05 | internal |
+----------+--------------+--------------+
Выход:
http://screencast.com/t/BsgouWSc5H3m
На моем скриншоте идентификатор пользователя USER: 1 имел общую продолжительность в течение 1589. Идентификатор пользователя USER: 2 имел продолжительность 297. Я хочу добавить возможность сортировки по общему времени. В этом случае, если DESC USER ID 1 будет отображаться первым. Затем, если ASC USER ID: 2 будет отображаться первым.
Задача ещё не решена.
Других решений пока нет …