2013-12-11 6 views
-1

мне нужна помощь только один запрос, это, например, мой столMySQl: проблема с запросом на выборку

id time status sid 
1 10:00 0  1 
2 12:00 0  2 
3 11:00 1  1 
4 13:00 1  2 

(статус 0 = входа, состояние 1 = выход из системы) Я хочу знать, в одном пользователей строк время входа и выхода из системы. Результат выбора запроса должен выглядеть следующим образом:

результат:

id time time2 sid 
1 10:00 11:00 1 
2 12:00 13:00 2 

Одна строка в результате должна содержать ту же с.и.д. одну пару, которая имеет статус 0 и следующий, который имеет статус 1, так что, как результат, который я бы дважды объединил, это время входа пользователя, а второе - время выхода из системы?

+0

что, если у нас есть более чем 2 записи Сида = 1. Или вы можете сказать, что, если несколько логинов пользователя, чем вы его проследите? (необходимо обновить структуру таблицы) –

+0

Запрос должен возвращать еще одну строку для этого пользователя, поскольку он может войти в систему несколько раз, единственная проблема заключается в том, что мне нужно иметь его время входа и выхода в ту же строку. Мне нужно соответствовать его статусу 0 и статусу 1 для каждой его сессии. – user20902

+0

посмотри на меня ответ, это сработает для тебя. –

ответ

0

Я принимаю только один логин для каждого пользователя.

SELECT id,time,(select time from table C where M.sid=C.sid and status = 1 LIMIT 1),sid 
FROM table M WHERE status = 0 

Если добавить еще один столбец в вас столе, чтобы выглядеть следующим образом:

id time status sid loginid 
11 10:00 0  1 0 
12 12:00 0  2 0 
13 11:00 1  1 11 
14 13:00 1  2 12 

Чем вы можете иметь запрос как

SELECT id,time,(select time from table C where C.loginid=M.id),sid 
FROM table M WHERE status = 0 
+0

Это будет работать только для одного пользователя на одного пользователя, но мне нужно иметь все его логины. – user20902

+0

Структура таблицы должна быть изменена для связи между логином/выходом из системы, но это будет сложно. –

+0

И даже ваше поле времени не сохраняет полную метку времени. .. :( –

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