Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
А такой запросик смогете?
|
|||
|---|---|---|---|
|
#18+
Есть две таблицы (t1, t2) t1 - idt1 - индекс - name - имя t2 - idt2 - индекс - idt1 - циферка для связи с t1 - info - некое поле которое может быть пустым а может и нет. И так вопрос: Забацать такой запрос, чтобы в результате были только те name для которых в t2 есть N непустых info. Хе-хе! А кто скажет - молодец! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2002, 19:15 |
|
||
|
А такой запросик смогете?
|
|||
|---|---|---|---|
|
#18+
И ГДЕ? ОН ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2002, 20:46 |
|
||
|
А такой запросик смогете?
|
|||
|---|---|---|---|
|
#18+
select * from t1 where idt1 in (select idt2 from t2 where info is not NULL) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2002, 21:05 |
|
||
|
А такой запросик смогете?
|
|||
|---|---|---|---|
|
#18+
вот он SELECT name FROM t1 WHERE N=( SELECT COUNT(*) FROM t2 WHERE t2.idt1=t1.idt1 AND t2.info IS NOT NULL) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2002, 22:17 |
|
||
|
А такой запросик смогете?
|
|||
|---|---|---|---|
|
#18+
Это для Димы и Стрелка. Дима, Вы невнимательно прочитали условие. Стрелок, зачем так сложно? Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2002, 23:00 |
|
||
|
А такой запросик смогете?
|
|||
|---|---|---|---|
|
#18+
Для Cat2 согласен, но Код: plaintext Если для строки из t1 в t2 кроме N непустых будут ещё и пустые, то count выдаст NULL, так ведь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2002, 23:35 |
|
||
|
А такой запросик смогете?
|
|||
|---|---|---|---|
|
#18+
Нет, не надо. Строки с NULL игнорируются автоматом. Но что бы это работало, надо Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2002, 23:57 |
|
||
|
А такой запросик смогете?
|
|||
|---|---|---|---|
|
#18+
Для Стрелка Написал и подумал, что это на 100% справедливо для MS SQL 7.0 и старше. Во многих других случаях (в том числе для MS SQL 6.5), такое поведение при обработке NULL агрегатными функциями является единственно возможным. Но эксперимент, нужно ли делать проверку на NULL, не помешает. Возможно, что в некоторых СУБД без такой проверки будет выскакивать ошибка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2002, 07:16 |
|
||
|
А такой запросик смогете?
|
|||
|---|---|---|---|
|
#18+
А какой из этих 2-ух вариантов оптимизнутее? У меня тестовая таблица мааааленькая и разницы не видно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2002, 19:22 |
|
||
|
А такой запросик смогете?
|
|||
|---|---|---|---|
|
#18+
Для Типа_гостя. Ну вот, наконец-то нормальный вопрос, а то какие-то предложения непонятные. Запрос с HAVING будет выполняться быстрее, чем с подзапросом. Но. Если предположить, что поле idt1 однозначно определяет Name и по idt1 имеется индекс (как должно быть в правильно построеной базе), то самым быстрым будет Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2002, 20:28 |
|
||
|
А такой запросик смогете?
|
|||
|---|---|---|---|
|
#18+
А нельзя-ли для идиотов популярно объяснить логику работы этих двух запросов и конкретно почему один быстрее другого, а третий быстрее всех? З.Ы. Даже если не объясните, то все равно спасибо за качественные ответы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2002, 17:39 |
|
||
|
А такой запросик смогете?
|
|||
|---|---|---|---|
|
#18+
Для проверки, какой запрос лучше, нужно в QA включить опцию Show Query Plan. Сервер покажет, как он выполнил это запрос. Запрос с подзапросом хуже, чем с HAVING потому, что подзапрос выполняется для каждого значения из t1. На моих таблицах он выполнялся в два раза медленнее. Агрегатирование выполняется значительно быстрее Несколько сложнее с запросом с индексом и без него. При небольшом количестве строк, оптимизатор может дать одинаковый план, так как оптимизатор может принять решение не использовать индексы. Но группировка по индексу, особенно первичному, выполняется быстрее, чем по произвольному полю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2002, 21:00 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=2080&tid=2119772]: |
0ms |
get settings: |
12ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
| others: | 273ms |
| total: | 415ms |

| 0 / 0 |
