![]() |
|
Модераторы: skyboy |
![]()
|
|
| numerovan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 549 Регистрация: 1.12.2007 Репутация: нет Всего: 2 |
Здравствуйте, хочиться решить составление запроса.
Вопрос таков: есть пользователи сайта, есть блок где выводятся 12 случайных пользователей, хочиться сделать так чтоб вначале выходились те кто в онлайн (если таковы имеются), а остальные из 12 - случайные пользователи портала. Как я вижу себе sql-запрос, сразу хочу сказать что он с ошибками, но смысл хочу показать запроса:
тут вот использовал три SELECT-а, думаю это плохо по производительности ... было бы лучше сократить эти SELECT-ы, чтоб запрос исполнялся быстрее по времени. Есть какие нибудь предположения ? |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Приведённый запрос эту часть задачи не решает. Докажите. Выражения типа "мне кажется" доказательством не являются. Преждевременная оптимизация - всегда плохо. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| numerovan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 549 Регистрация: 1.12.2007 Репутация: нет Всего: 2 |
может я плохо выразился и код, что написал, не соответствует ....
Смысл таков: если есть пользователи онлайн, то вначале показывать их, если пользователей онлайн меньше 12, например их 5, то остальные 7 пользователей добавлять путем rand-омайза (выборочные случайные пользователи). На данный момент я решил эту задачу путем трех обращений к базе данных, т.е. делаются 3 запроса: 1. выбрать пользователей кто в онлайн, не больше 12 2. если пользователей меньше 12, получить остаток случ. пользователей рандомайзом. 3. соединить результат. хочиться одним запросом, убить двух зайцев ... |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| numerovan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 549 Регистрация: 1.12.2007 Репутация: нет Всего: 2 |
проверил ваш код, признаюсь не работает он ... всмысле в начале списка не выходят пользователи кто в онлайн, а рандомайз да работает.
Есть еще варинаты ? |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Конечно, есть. Только они для тебя очень уж обидные...
В текст запроса намеренно внесена маленькая логическая ляпа, в надежде, что ты разберёшься, что и как делает этот запрос, и исправишь эту ляпу, получив рабочий текст. Вот только для этого надо попробовать воспользоваться мозгом, который подарила тебе природа. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| numerovan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 549 Регистрация: 1.12.2007 Репутация: нет Всего: 2 |
не спорю, знаю что я не силен в sql-запросах, основы знаю ... но вот если попадются не простые ситуации, то тут начинаю тормозить. Вы стого не судите меня, ведь этот форум и расчитан на обмен знаниями и моя ситуация это нормальная. Написали бы стразу что там намерено чуток не правильно написали, мол типо "а остальное додумайся сам" - без проблем ... зачем так умничать не понимаю ... но все равно спасибо.
|
|||
|
||||
| numerovan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 549 Регистрация: 1.12.2007 Репутация: нет Всего: 2 |
вот так вроде заработало
|
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Ну вот, всегда бы так... хотя проще было просто поменять знак в условии сравнения в секции сортировки.
Если ты понял ПРИЁМ, который тут использован - он больше никогда у тебя трудностей не вызовет. И вопросов таких соответственно просто не будет. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| numerovan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 549 Регистрация: 1.12.2007 Репутация: нет Всего: 2 |
вот так хорошо да ...
Это сообщение отредактировал(а) numerovan - 13.6.2014, 02:05 |
|||
|
||||
| numerovan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 549 Регистрация: 1.12.2007 Репутация: нет Всего: 2 |
----
Это сообщение отредактировал(а) numerovan - 13.6.2014, 02:04 |
|||
|
||||
| numerovan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 549 Регистрация: 1.12.2007 Репутация: нет Всего: 2 |
---
Это сообщение отредактировал(а) numerovan - 13.6.2014, 02:04 |
|||
|
||||
![]()
|
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |