Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > Надо TOP10 сделать, но...


Автор: Baa 30.10.2003, 05:29
Есть у меня аксесная БД... (лог с фтп)
И вот такой запрос сделал (можно и по-уродски, конечно)
Код

SELECT [Target] AS [Target Resource], count(*) AS Hits
FROM inetlog
WHERE ([bytessent] > 0 and [operation] like '*sent')
GROUP BY [Target]
ORDER BY count(*) DESC;

А как мне терь из этого Top10 сделать? не выбирая это в отдельную таблицу?
т.е. как надо этот запрос модифицировать?

Автор: Ars 30.10.2003, 11:31
Ты знал, ты знал !!! smile.gif
Смотри про TOP
Вроде где-то так:
Код
SELECT TOP 10 [Target]...

Автор: Baa 31.10.2003, 00:25
Не-а... не катит sad.gif почему-то селектится вместо 10 16
в том-то и дело... как её юзать я знаю... а вот как в моем случае выбрать нужное кол-во

Автор: Vit 31.10.2003, 06:07
Боюсь что без View не обойтись - сделай View с твоей кверёй, а потом на нём запусти кверю select top 10 * From MyView

Автор: Baa 4.11.2003, 02:58
А облом в том, что аксес не умеет CREATE VIEW... для него подобная инструкция не допустима sad.gif

Автор: Vit 4.11.2003, 03:28
View надо подготовить заранее... Увы MS Access слишком слабая база данных...

Автор: Kesh 5.11.2003, 15:57
А как то же самое сделать на Oracle?

Автор: Baa 6.11.2003, 05:24
Кстати говоря, в MySQL тоже нет VIEWs... sad.gif планируют ввести в пятой версии...

Автор: SVK 6.11.2003, 12:44
Access не такая уж и слабая база. Create view она не понимает, но view можно сделать ручками. Он у них назвается "запрос" ("query").

Или можно попробовать сделать select в select-e:

Код
select top 10 * from
(
SELECT [Target] AS [Target Resource], count(*) AS Hits
FROM inetlog
WHERE ([bytessent] > 0 and [operation] like '*sent')
GROUP BY [Target]
ORDER BY count(*) DESC;
)


Должно сработать. Не уверен, правда - давно с аксессом не работал

Автор: Baa 9.11.2003, 06:02
В MySQL это решилось довольно просто smile.gif
SQL
SELECT target, COUNT(Target) AS 'Hits'
FROM inetlog WHERE (((bytessent)>0) AND (operation LIKE "%sent%"))
GROUP BY target ORDER BY Hits DESC LIMIT 0, 10;

з.ы. а че у нас GROUP BY не подсветилось?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)