![]() |
|
Модераторы: skyboy |
![]()
|
|
| gelo86 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 388 Регистрация: 26.10.2007 Репутация: нет Всего: нет |
Допустим у меня есть две таблицы:
Есть такие записи:
Как мне вытенуть людей, каторие нечитали книжки с именем Name2 ? Left join мне вернет человека с id=1, так как он имеет есчо запись с книжкой под названием 'Name1'. |
||||
|
|||||
| ТоляМБА |
|
|||
![]() Котэ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 Репутация: 4 Всего: 252 |
Методом исключения:
Если не пойдет, то после закрывающей скобки допиши 'AS a'. |
|||
|
||||
| gelo86 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 388 Регистрация: 26.10.2007 Репутация: нет Всего: нет |
1. У меня около 30000 людей, и если половина из них прочитали ету книжку, то получится что в not in будет около 15000 идишников (а как слишал not in при таких количествах неочень оптимальный).
2. Да и селект :
Это сообщение отредактировал(а) gelo86 - 28.9.2009, 19:34 |
||||
|
|||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 24 Всего: 54 |
-------------------- Слава Україні! |
|||
|
||||
| gelo86 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 388 Регистрация: 26.10.2007 Репутация: нет Всего: нет |
Та же проблема с not in. Я понемаю, что может и нету другого способа. А как ви относитесь к: not in(1..15000) ? |
||||
|
|||||
| Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 24 Всего: 54 |
СУБД? Например счастливые пользователи Oracle могут воспользоваться предложением MINUS...
-------------------- Слава Україні! |
|||
|
||||
| gelo86 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 388 Регистрация: 26.10.2007 Репутация: нет Всего: нет |
Исползуется Oracle, но пишем на Java + Hibernate => HQL, поетому думаю MINUS в HQL непрокатит :(
|
|||
|
||||
| boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: нет Всего: 35 |
Можно конечно совсем без not in,
-------------------- Никогда не говори никогда |
|||
|
||||
| gelo86 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 388 Регистрация: 26.10.2007 Репутация: нет Всего: нет |
А СУБД внутренний селект будет виполнять толко один раз ? |
||||
|
|||||
| Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 24 Всего: 54 |
Вот тут написано про про разность и некоторые варианты его реализации...
-------------------- Слава Україні! |
|||
|
||||
| boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: нет Всего: 35 |
Да, так как не зависит от внешних параметров. -------------------- Никогда не говори никогда |
|||
|
||||
| Zloxa |
|
||||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
boevik,
Тогда уж лучше
disitnct раскоментировать, если пара user_id,name не уникальна. ну и еще несколько вариаций
Веский аргумент. -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
||||
|
|||||
| gelo86 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 388 Регистрация: 26.10.2007 Репутация: нет Всего: нет |
||||
|
||||
| boevik |
|
||||||||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: нет Всего: 35 |
Вполне возможно что и этот вариант пройдет. (не совсем помню как поведет себя name = 'book1' внутри on)
В этом случае на каждую запись в таблице user выполняется внутрений select, если есть индекс то может и не страшно, а если нет, то ...
минус не все СУБД поддерживают.
совсем не верный результат вернет. Добавлено через 8 минут и 13 секунд
показать только теx пользователей из t1 которые не присуствуют в t2 -------------------- Никогда не говори никогда |
||||||||||||||
|
|||||||||||||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |