![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
GROUP BY
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 в указанном контексте там ни слова.
А что до Оракла и пр. - нехай как хотят придумывают слова...:)