Форум программистов, компьютерный форум, киберфорум
Oracle
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
verter
1

Как отфильтровать записи в запросе?

30.06.2011, 14:07. Показов 2109. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть такая вот таблица:

ID CODE NAME INFO
1 1 Петя мужчина
2 1 Петя строитель
3 2 Вася мужчина
4 2 Вася водитель
5 2 Вася null
6 3 Игорь null

Как в запросе убрать записи с null'ом в INFO для записей с одинаковым CODE которых > 1
чтобы получилось вот так:

ID CODE NAME INFO
1 1 Петя мужчина
2 1 Петя строитель
3 2 Вася мужчина
4 2 Вася водитель
6 3 Игорь null

т.е. 5-ую запись убрать нафиг
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.06.2011, 14:07
Ответы с готовыми решениями:

Как в запросе отфильтровать поля, содержащие знак вопроса
Как в запросе отфильтровать поля, содержащие знак ?

Как отфильтровать записи в DataGridView
Бедные поисковики, я их наверно задолбал уже. Обращаюсь к вам с таким вопросом: Можно ли...

Как отфильтровать записи базы данных
Доброе время суток. Помогите пжл, как можно соуществить фильтрацию записей базы данных в делфи?А...

Как отфильтровать записи для определенного периода между двумя датами
Помогите с советом:) Есть бд, в ней делаю фильтр по некоторым значениям (фирма, серия, дата). На...

6
0 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 11
03.07.2011, 13:34 2
Код
select * from table t1
where
(info is not null) or (info is null and not exists (select null from table t2 where t2.code=t1.code and t2.info is not null))
0
verter
03.07.2011, 17:33 3
Спасибо за ответ! Это работает, но работает очень долго, скорее всего из-за использования exists, надо его на count поменять.
0 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 11
03.07.2011, 18:40 4
то что долго догадывался. но с count вряд ли лучше будет
0
0 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 11
03.07.2011, 18:42 5
а быстрее возможно будет так
Код
 
select * from table t1
where(info is not null) 
uniun all
select * from table t1
where
(info is null and not exists (select null from table t2 where t2.code=t1.code and t2.info is not null))
0
verter
03.07.2011, 18:45 6
я проверил - тормоза 100% из-за exists. C count у меня работает в 25 раз быстрее, т.е. запрос тогда будет такой:

Oracle 11 SQL
1
2
3
4
5
6
SELECT * FROM TABLE t1
WHERE (info IS NOT NULL) 
   OR (info IS NULL AND (SELECT COUNT(*) FROM TABLE t2  
                         WHERE t2.code = t1.code 
                           AND t2.info IS NOT NULL) = 0
      )
0 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 11
03.07.2011, 18:57 7
спорить особо не буду. но count на больших выборках , как показывает моя практика плохо работает
0
03.07.2011, 18:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.07.2011, 18:57
Помогаю со студенческими работами здесь

Как в запросе искать id одной записи в свойстве другой записи?
Дана таблица с деревом категорий CREATE TABLE category ( id integer not null primary key, ...

Программно отфильтровать записи
Добрый день. Подскажите пожалуйста. У меня такая задача. Есть форма в которой есть список...

Как пронумеровать записи в запросе
как пронумеровать записи в результате запроса. коды которые находил в интернете на SQL, в 1С...

BindingSource.Filter: возможно ли отфильтровать записи по маске
Доброго времени суток госпада! Будьте добры подскажите возможно ли использовать каку либо маску,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru