Задавайте вопросы, мы ответим
Вы не зашли.
Есть три таблицы:
1. user_table (таблица пользователей)
В ней три поля:
- id (идентификатор пользователя, ключевое поле, автоинкремент)
- login (имя пользователя)
- pass (пароль)
2. comp_table (таблица компьютеров)
В ней несколько полей, два из них важные:
- hwid (идентификатор компьютера - Hardware ID, уникальное поле)
- user_id (принадлежность этого компьютера пользователю из первой таблицы).
У одного и того же пользователя могут быть несколько компьютеров.
3. stat_table (основная таблица, куда ежедневно заносятся данные от компьютеров из второй таблицы).
В ней несколько полей, из них можно выделить особо:
- hwid (идентификатор компьютера из второй таблицы)
- count (какое-то вычисляемое поле)
- cur_date (дата получения данных)
В начале работы каждый пользователь авторизуется. Если он есть в первой таблице, он продолжает работать и ему присваивается id из первого поля первой таблицы.
Нужно сделать выборку по третьей таблице, но только для тех компьютеров, для которых идентификатор (hwid) соответствует id пользователя (из второй таблицы), т.е. пользователь может просмотреть данные только от своих компьютеров.
Как правильно сформировать запрос? SELECT cur_date, count FROM stat_table, comp_table WHERE hwid = ???
Неактивен
Отредактированно vaspet (29.08.2011 11:36:17)
Неактивен
Спасибо!
А я сделал так:
$query = "SELECT * FROM `stat_table` WHERE `hwid` IN (SELECT `hwid` FROM `comp_table` WHERE `user_id`=" . $userid . ")";
где $userid уже полученный id пользователя из первой таблицы.
Мой вариант тоже работает, но подскажите, какой будет быстрее? (пока таблицы маленькие, оценить сложно)
Отредактированно kostasoft (29.08.2011 13:08:11)
Неактивен
Неактивен
Вот ещё похожий случай
http://sqlinfo.ru/forum/viewtopic.php?id=4623
Неактивен