![]() |
|
Модераторы: LSD |
![]()
|
|
| Royan |
|
|||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: нет Всего: 15 |
Всех с прошедшими праздниками! Только вернулся из долгих праздничных выходных в суровые рабочие будни 2008-го, страсть как не хочется работать, но ... короче вопрос
Сижу я под Oracle, но не думаю что тут есть что-то специфическое. Есть две таблицы TUsers и TUsersOnline в одной вообще все юзеры в другой те которые находятся online. Я хочу одним запросом выводить всех юзеров которые в offline, т.е. тех которые есть в TUsers и нет в TLoggedUsers -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
| DEER |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 749 Регистрация: 12.4.2005 Где: г. Рязань Репутация: нет Всего: 13 |
ну это вообще проста
типа, если эти две таблицы связаны по полю id -------------------- |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: нет Всего: 149 |
так же можно иннер джоин двут таблиц сделать
Пошел за кодом... Добавлено через 37 секунд надо протестить что будет быстрее |
|||
|
||||
| DEER |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 749 Регистрация: 12.4.2005 Где: г. Рязань Репутация: нет Всего: 13 |
В постгрисе WHERE ... IN быстрее отрабатывает при большом количестве записей.
проверял не раз уже. а при маленьком, так там и разницы нет что 0.1 мс будет, что 0.13 -------------------- |
|||
|
||||
| Deniz |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 7 Всего: 44 |
В вопросе Пример с join
-------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
||||
|
|||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 2 Всего: 44 |
А про minus все забыли....
|
|||
|
||||
| Deniz |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 7 Всего: 44 |
DimW, кроме user_name может потребоваться вывод и других полей, а при разной структуре TUsersOnline и TUsers запрос сильно усложняется, да и использование индексов под вопросом.
-------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 2 Всего: 44 |
от автора уточнеий по этому поводу не было. счего вы взяли что id в разных таблицах будут соответствовать одному и тому же юзеру, если они вобще есть. |
|||
|
||||
| Deniz |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 7 Всего: 44 |
DimW, автор вообще скрылся из виду и молчит
Не нравится id напишите IDUser или еще как хотите. -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 2 Всего: 44 |
не суть, я имел ввиду что нет гарантии что таблицы связаны какими либо ключами, точно так же нет гарантии что ему не понадобятся поля которых нет в таблице TUsersOnline. есть ситуации в которых фулл скан таблицы работает быстрее индыксов, поэтому это не аргумент, только план запроса и тесты могут показать что предпочтительней. Deniz, это не попытка ткнуть пальцем именно в вас. Давайте прекратим спор и дождемся автора и выясним что конкретно ему нужно... |
|||
|
||||
| cra6 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 10.12.2007 Репутация: нет Всего: 2 |
EXCEPT используется для того, чтобы объединять результаты двух или более команд SELECT, при этом в результат включаются только строки, содержащиеся в первой команде SELECT и не содержащиеся во второй. Поля всех результирующих таблиц должны быть совместимыми. Если ALL не использовано, то дупликаты исключаются из объединения результатов.
Пример:
|
|||
|
||||
| Deniz |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 7 Всего: 44 |
cra6, судя по описанию EXCEPT очень смахивает вот на это
-------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
![]()
|
| Правила форума "Общие вопросы по базам данных" | |
|
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |