|
Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Научите меня правильно строить сложные запросы к базе данных |
|
Научите меня правильно строить сложные запросы к базе данных
|
Ветеран Сообщения: 1864 |
Профиль | Отправить PM | Цитировать Пhедположим такая ситуация
Есть 2 таблицы: users, ids В первой есть строки name, email Во второй: name, id Задача запроса: вывести name, email из первой таблицы когда name из 1 равен name из 2 и id равен 5 Я пишу: select A.name, A.email from users A, ids B where A.name=B.name and B.ids=5 Но такой вариант не проходит Подскажите плиззз где у меня ошибка [s]Исправлено: vadimiron, 1:48 22-05-2004[/s] |
|
------- Отправлено: 00:25, 22-05-2004 |
Ветеран Сообщения: 1864
|
Профиль | Отправить PM | Цитировать Vlad Drakula
Сенкс, но же написал что сам запрос был неправильно составлен, то есть с лишними скобками, и естественно mysql_fetch_row() выдавал ошибку, так как не получал нормальной инфы из запроса Сейчас всё работает |
------- Отправлено: 02:28, 29-05-2004 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ночной странник Сообщения: 4050
|
Профиль | Сайт | Отправить PM | Цитировать Prisoner
а что означает DISTINCT Добавлено: vadimiron дело в том что в данной задаче очень сложно определить нужны ли индексы и какие именно! если нужна оптимизация то я бы посоветовал сделать одну таблицу с тремя полями и индексом по id. на мой взгляд это будет наиболее оптимальный вариант! |
------- Отправлено: 02:29, 29-05-2004 | #12 |
just mar Сообщения: 3904
|
Профиль | Отправить PM | Цитировать Vlad Drakula
Цитата:
|
|
Отправлено: 13:43, 29-05-2004 | #13 |
Engrossed by the Void Сообщения: 2229
|
Профиль | Отправить PM | Цитировать Выбор несовпадающего... угу. Вообще говоря
Цитата MySQL manual:
CREATE TABLE `users` ( `u_id` TINYINT(5) UNSIGNED NOT NULL AUTO_INCREMENT, `s_id` CHAR(32) NOT NULL, `s_init_time` TIMESTAMP(14) NOT NULL, `u_name` CHAR(100) NOT NULL, `u_mail` CHAR(50) NOT NULL, PRIMARY KEY (`u_id`), UNIQUE KEY `u_id` (`u_id`), UNIQUE KEY `s_id` (`s_id`), UNIQUE KEY `u_mail` (`u_mail`) ); |
|
------- Отправлено: 17:09, 30-05-2004 | #14 |
Ветеран Сообщения: 1864
|
Профиль | Отправить PM | Цитировать Не, у меня в голове не очень укладывается, как это всё в одну таблицу запихнуть, читсо логически: сессии-это что то очень динамическое, если юзер определённое время не был активен то есть не делал никаких действий, то сессия стирается, таким образом всё время какие то движения происходят там, что то добавляется, что то стирается, а таблица с юзерами статична, изменения редко бывают, а теперь представим, что у меня записано 1000 юзеров, и что, каждый раз придётся проверять все 1000 строк, чтобы узнать устарела ли сессия или нет
Добавлено: Верней, чтобы узнать какие сессии стирать можно а какие ещё рано |
------- Отправлено: 21:36, 30-05-2004 | #15 |
Engrossed by the Void Сообщения: 2229
|
Профиль | Отправить PM | Цитировать А как ты выявляешь факт устаревании сессии? Ну пусть какой-то такой факт есть. Скажем это время - пусть сессия выделяется на 5 часов (сразу прикинь на каком типе ресурсов это окажется незаменимым ) и факт нажатия на ссылку "выход". В любом случае перед уничтожением сессии опустоши в таблице поле этой сессии для конкретного пользователя, по той логике, что была предложена выше это означает, что сессия закрыта. Еще ко всему, каждый раз когда делаешь это опустошай (и удаляй сессии PHP) поле сессий которые зарегестрированы более 5ти часов назад. Для этого достаточно выполнить всего два запроса.
Для шага (а) Для шага (б) Причем следует знать, что первый в таблице столбец типа timestamp означивается в операциях INSERT, UPDATE текущей датой в том случае, если он явно не указан в этих операциях (есть еще уточняющие моменты, но их можно найти в мануале). Это нам не мешает, а даже наруку. |
------- Отправлено: 22:21, 30-05-2004 | #16 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
C/C++ - Как правильно задать тип данных в массиве | ShadowMas | Программирование и базы данных | 4 | 18-04-2009 22:26 | |
не удается подключиться к базе данных сервера WSUS | Rkiller | WSUS | 10 | 09-02-2009 17:08 | |
MySQL - [решено] сохранение данных в базе данных Mysql | TigerZaka | Программирование и базы данных | 4 | 24-08-2008 15:48 | |
Представление файловой системы в базе данных | Amina | Программирование и базы данных | 1 | 29-03-2004 14:50 | |
Дробление табличек в базе данных | x404 | Программирование и базы данных | 2 | 23-10-2003 02:21 |
|