Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

GROUP BY


Страницы:   1 2

Climber ©   (2006-09-28 21:10:00) 

Проштудировал хэлп. Вопрос встал острее =)  Сабжевая функция ведь выдаст записи с уникальным SS.

select ss,count(ss)
from base
group by ss
having count(ss)>10

А мне необходимы ВСЕ записи базы base, в которых присутствует ss, который в базе встречается > 10 раз.

При том, что в select нужно еще поля добавлять и, соответственно, добавлять их в GROUP BY, после чего кол-во выданных запросом записей еще резко сокращается.

Я чего-то не дочитал?


Climber   (2006-10-08 09:30:00) [1]

А где фиксить EDBEngineError "Temporary table resourse limit"?..


ЮЮ   (2006-10-06 04:22:00) [2]

в нем еще выборка WHERE добавлена

Ну и чего ты тогда хочешь? Естественно часть записей отсекается. Если же хочешь, чтобы не менее десятиЮ удовлетворяющих условию, то WHERE надо поместить в подзапрос, в запросе тогда не нужен.

К сожалению, параметры в подзапросах не поддерживаются. Поэтому подзапрос придется постояноо перезаписывать динамически. При многопользовательском режиме следует позаботиться о "разделении доступа" к подзапросам


Climber   (2006-10-05 13:01:00) [3]

этот запрос. + в нем еще выборка WHERE добавлена.  Разное число записей для каждого ss попадает. Условию <10 тоже не удовлетворяют.. =|
SELECT base.* FRОM
"cnt10.sql" v
JOIN base ON v.ss = base.ss
где cnt10.sql текстовый файл в БД с запросом
select ss from base group by ss having count(ss)>10


ЮЮ   (2006-10-04 04:25:00) [4]


> попадают записи с ss,который встречается и менее 10 раз


Какой именно запрос выполняешь? Как проверяешь? Попадают эти записи в запрос с условием < 10 ???


Sergey13   (2006-10-03 09:44:00) [5]

> [32] ЮЮ ©   (03.10.06 05:31)

> Зачкм так мякго? Это или правда (на некоторых серверах).
> Или неправда.(на всех серверах)

Это скорее не от сервера зависит, а от условия - если здоровый подзапрос выполняется для каждой записи основного запроса, то тормоза практически обеспечены, если один раз, то еще не факт.


Climber   (2006-10-03 09:30:00) [6]

попадают записи с ss,который встречается и менее 10 раз. В общем по рандому. Не понятно..


ЮЮ   (2006-10-03 05:31:00) [7]


> выборка существенно ускорилась, но некорректная она, не
> получается то, что требуется..


По какому запросу ?  Что попало не то? Что не попало, что ожидалось?


> (мягко) Это не совсем правда.

Зачкм так мякго? Это или правда (на некоторых серверах). Или неправда.(на всех серверах)


Fay   (2006-10-02 15:06:00) [8]

2 ЮЮ ©   (02.10.06 4:04) [29]
> Если подзапрос возвращает много записей, то IN - тормоза не только для БДЕ.
(мягко) Это не совсем правда.


Climber   (2006-10-02 14:40:00) [9]

выборка существенно ускорилась, но некорректная она, не получается то, что требуется..


ЮЮ   (2006-10-02 04:04:00) [10]

Если подзапрос возвращает много записей, то IN - тормоза не только для БДЕ.
Если сам подзапрос выполняется за приемлимое время, то предлагаю использовать Local View:

SELECT base.* FRОM
 "cnt10.sql" v
 JOIN base ON v.ss = base.ss

где cnt10.sql текстовый файл в БД с запросом
select ss from base group by ss having count(ss)>10

З.Ы. Судя по выделенному, индекс по ss в таблице base  очень даже не помешает.


Anatoly Podgoretsky   (2006-09-29 19:59:00) [11]

Не знаю как насчет SQL-99, но для SQL-92 существует как минимум три уровня совместимости, первый должны поддерживать все, кто заявляет об совместимости, а вот дотягивает ли кто ни будь до третьего - не уверен.
Но все бодро заявляют об совместимости.


Climber   (2006-09-29 19:41:00) [12]

BDE. база FoxPro, досовая.
ни with, ни inner join не проходит..


evvcom   (2006-09-29 17:29:00) [13]

> [25] Виталий Панасенко   (29.09.06 17:11)

Не заметил нигде "формата" Paradox-а. В парадоксе (Local-SQL) вложенный селект вообще не прошел бы. Может, конечно, то что в in интерпретируется не как вложенный селект, фиг знает. Но мне, кажется, в парадоксе такой запрос сообщил бы об ошибке. Проверять лень.


Виталий Панасенко   (2006-09-29 17:11:00) [14]

А СУБД, похоже, Paradox. В предыдущем посте аффтара этот формат был указан


evvcom   (2006-09-29 17:07:00) [15]

> [21] Climber ©   (29.09.06 16:36)

Про СУБД так и ни слова?
Я конструкцию in стараюсь не использовать. Частенько оракл воспринимает ее не так как хотелось бы мне. А меняется на join практически всегда очень легко. Попробуй [5]


Fay   (2006-09-29 17:05:00) [16]

Виталий Панасенко   (29.09.06 16:59) [22]
а индексов мало 8)


Виталий Панасенко   (2006-09-29 16:59:00) [17]


> Climber ©   (29.09.06 16:36) [21]
> select ss
> from base
> where ss in (select ss from base group by ss having count(ss)>10)
>
> повисает.  с count(*) тоже.  где неверно?

Уверен ? Может, просто записей много...


Climber   (2006-09-29 16:36:00) [18]

select ss
from base
where ss in (select ss from base group by ss having count(ss)>10)

повисает.  с count(*) тоже.  где неверно?


Fay   (2006-09-29 15:40:00) [19]

2 Johnmen ©   (29.09.06 15:17) [19]
> У меня есть стандарт.
SQL-99 ?


Johnmen   (2006-09-29 15:17:00) [20]


> Fay ©   (29.09.06 13:57) [14]
> У меня нет ссылки на стандарт,


У меня есть стандарт. Про WITH в указанном контексте там ни слова.
А что до Оракла и пр. - нехай как хотят придумывают слова...:)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо