![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как изменить запрос, чтобы получить кол-во строк? [MSSQL]
AngeL B. © (2006-09-24 20:45:00)Предположим, у меня есть запрос такого вида
SELECT DISTINCT FieldA, FieldB FROM Table1
который вернет мне набор уникальных пар(!) из значений полей FieldA и FieldB.
Вопрос: Как изменить запрос для MS SQL 2000 чтобы я получил количество таких пар, а не сами пары?
P.S. Использование count(*) не предлагать, т.к. в таблице могут быть другие поля, которые могут увеличивать число уникальных строк. Мне нужно именно кол-во унивельных пар по определенной паре.
sniknik (2006-09-26 16:22:00) [1]> Такое работать будет дольше, чем с count от другой выборки.
> ...
проверь... практика критерий истины, и потом, возможно там у тебя не строки, а числа (мы то этого не знаем)... с которыми операции быстрее.
а на создание дополнительного рекордсета тоже не малые ресурсы требуются.
AngeL B. (2006-09-26 15:43:00) [2]
> SELECT Count(DISTINCT FieldA+FieldB) FROM Table1
Такое работать будет дольше, чем с count от другой выборки.
В моем случае это будут 10-ки тыс. пар и для каждой придется вычислять сумму. IMHO
sniknik (2006-09-26 13:27:00) [3]логично.
Johnmen (2006-09-26 13:08:00) [4]
> sniknik © (26.09.06 12:46) [10]
Только слагаемые надо "подравнять". А то м.б. "a"+"bc"="ab"+"c"
sniknik (2006-09-26 12:46:00) [5]> Не понял каким способом типы и их совокупность может влиять на желаемое ...
желание идиотское, а типы могли бы помоч, например оба varchar(30)... ->
SELECT Count(DISTINCT FieldA+FieldB) FROM Table1
Johnmen (2006-09-26 12:39:00) [6]
> evvcom © (26.09.06 11:06) [8]
Легко м.б. решено, но с каунтом. А аффтар сам не понимает своего счастья...:) Его P.S. просто абсурдно...:)
evvcom (2006-09-26 11:06:00) [7]> [7] Johnmen © (26.09.06 10:51)
Не понял каким способом типы и их совокупность может влиять на желаемое в [0]. Ответ [1] без count :), как и аналогичный с count
SELECT count(*) FROM (SELECT DISTINCT FieldA, FieldB FROM Table1)
должны работать с любыми типами (не блобами) на любых серверах корректно. Я не прав? Или не понял мысль [7]?
Johnmen (2006-09-26 10:51:00) [8]
> evvcom © (26.09.06 09:43) [6]
Нет, не на блобы. Просто при определенных типах и их совокупности можно легко получить желаемое в [0].
evvcom (2006-09-26 09:43:00) [9]> [5] Johnmen © (26.09.06 09:19)
А какая разница? Или это намек на блобы? :)
Johnmen (2006-09-26 09:19:00) [10]
> AngeL B. (24.09.06 20:45)
Какого типа поля FieldA, FieldB?
evvcom (2006-09-26 08:44:00) [11]> [3] AngeL B. (25.09.06 13:27)
Да ты что? Без алиаса ругается? Не может быть! :Ф)
AngeL B. (2006-09-25 13:27:00) [12]:) О, помогло.
Просто выборку после FROM надо было с 'AS' использовать. Без него материться, говорит "скобочка не там стоит".
Спасибо.
Anatoly Podgoretsky (2006-09-24 23:57:00) [13]
> Использование count(*) не предлагать
За что такая не любовь к count
sniknik (2006-09-24 20:57:00) [14]> Использование count(*) не предлагать, ...
нда, это все усложняет... придется извращатся...
вот та например
SELECT Sum(1) AS Col FROM (SELECT DISTINCT FieldA, FieldB FROM Table1) AS a
(заметь count-а нет ;о))