Друзья онлайн MYSQL

программирование php MySQL базы данных

Есть 2 таблицы

tab: users
----------------------------------------
id | name | last_visit
----------------------------------------
1 | sasha | 09.08.13 14:25
2 | masha | 09.08.13 14:25
3 | pasha | 09.08.13 14:25

tab: friends
---------------------------------------
id | user | friend
---------------------------------------
1 | 1 | 2
2 | 1 | 3

Нужно одним запросом получить друзей онлайн.

примерно так

"SELECT COUNT(*) FROM users JOIN friend_list ON users.id=friend_list.friend, friend_list.users=1, users.last_visit + 300 < NOW()"

только правильно и должно работать

иными словами:

сначала ищем в friends все записи с user=1, потом все эти записи фильтруем через user.last_visit+300<now()
Ответы:
что-то с названиями таблиц и полей напутано - вроде как 2-я таблица friends, а потом почему-то JOIN friend_list
friend_list.users наверное должно быть friends.user
и где собственно WHERE.
в общем если 300-секунды, то приблизительно так:
SELECT COUNT(*) FROM users JOIN friends ON users.id=friends.friend where friends.user=1 and unix_timestamp(users.last_visit) + 300 > unix_timestamp(NOW())
еще можно использовать функцию date_add http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-add


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.