Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> запрос по условию, if результат true то добовить в таблицу 
:(
    Опции темы
Date
Дата 20.12.2006, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 221
Регистрация: 22.3.2006
Где: Алматы

Репутация: нет
Всего: 3



Здравствуйте.. у меня вот такая задача... 

есть таблица users в которой записанны пользователи... так же есть таблица online туда заносяться записи о пользователях которые на данный момент в онлайне.. 
в таблице online есть столбец где указанно вребя бездействия пользователя...

задача:
1. если время бездействия свыше 15 мин.. то запись удоляется.. 
2. а в таблицу пользователей добовляется в столбец последнего посещения время удоления из таблицы online


с первым разобрался а вот как быть со вторым? как это сделать одним запросом?


--------------------
Люди не будьте свиньями, Бросайте мусор в урны.
PM MAIL WWW   Вверх
Rodman
Дата 20.12.2006, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: нет
Всего: 122



Код

INSERT INTO USERS (FieldDAte) VALUES(SELECT DateStop FROM ONLINE WHERE (UserID=:Prm)) 

не пойдет?

Это сообщение отредактировал(а) Rodman - 20.12.2006, 13:28
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Date
Дата 20.12.2006, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 221
Регистрация: 22.3.2006
Где: Алматы

Репутация: нет
Всего: 3



Попробую....
Спасибо..

сообщу о результате...
--------------------
Люди не будьте свиньями, Бросайте мусор в урны.
PM MAIL WWW   Вверх
muzer
Дата 20.12.2006, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 387
Регистрация: 31.8.2006

Репутация: 30
Всего: 31



Rodman, а для каких юзеров вы даты вставляете? И что за синтаксис..


Date, одним запросом никак, по-любому первый запрос обновит времена последнего визита, второй удалит из таблицы online устаревшие строки.

Обновляем users:
Код

UPDATE users u INNER JOIN online o USING(userid) SET u.lasttime = NOW() WHERE o.updatetime < NOW() - INTERVAL 15 MINUTE;
Далее чистим online:
Код

DELETE FROM online WHERE updatetime < NOW() - INTERVAL 15 MINUTE;


Чтобы не произошло потери данных, можно сравнивать не с NOW(), а с фиксированным временем, предварительно сгенерённым вашей программой.
PM WWW   Вверх
Date
Дата 21.12.2006, 08:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 221
Регистрация: 22.3.2006
Где: Алматы

Репутация: нет
Всего: 3



все ОК...

удалось сделать с вложенными запросам что-то вроде этого получилось:

Код

UPDATE users SET last_time=time(now()), last_date=date(now()) WHERE id_user=(SELECT id_user FROM online WHERE time=time(adddate(now(), INTERVAL -15 minute)));


всем спасиб...
--------------------
Люди не будьте свиньями, Бросайте мусор в урны.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0410 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.