Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 1 |

 

  Вопрос: Подсчёт уникальных значений во всех столбцах Добавлено: 15.12.10 18:10  

Автор вопроса:  Zahar | Web-сайт: partnerka-ru.info
Имеется большая таблица с N столбцов, в которой через SQL осуществляются различные выборки.
В моей программе необходимо осуществлять предпросмотр количества уникальных данных в каждом столбце по каждой сделанной пользователем выборке (а уже потом пользователь решает выводить выборку в таблицу или не выводить).
Всё, что сумел сообразить, выглядит примерно так:

SELECT count1, count, count3, ..., countN
FROM
(SELECT COUNT(Field1) as count1 FROM (SELECT DISTINCT (Field1) FROM Table WHERE #more_conditions#) AS q1, "
(SELECT COUNT(Field2) as count2 FROM (SELECT DISTINCT (Field2) FROM Table WHERE #more_conditions#) AS q2, "
(SELECT COUNT(Field3) as count3 FROM (SELECT DISTINCT (Field3) FROM Table WHERE #more_conditions#) AS q3, "
...
(SELECT COUNT(FieldN) as count1 FROM (SELECT DISTINCT (FieldN) FROM Table WHERE #more_conditions#) AS qN "



где #more_conditions# - это набор условий.

Это работает, но работает ужасно долго (таблица очень большая, полей очень много).
Есть какие-то более приемлемые варианты? Может проблема в том, что для осуществления подсчёта уникальных значений по каждому столбцу, сначала каждый отдельный раз делается выборка из таблицы согласно #more_conditions# и можно как-то сделать, чтобы выборка была сделана единожды, а уже в ней подсчитывалось количество значений по каждому столбцу (может быть это я глупость написал, извиняйте).

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #1
Добавлено: 15.12.10 22:28
  1. select count(distinct field1) as c1, count(distinct field2) as c2 from mytable

А если фильтровать, то, видимо, придется писать вложенный запрос.

Ответить

Номер ответа: 2
Автор ответа:
 Zahar



Вопросов: 91
Ответов: 67
 Web-сайт: partnerka-ru.info
 Профиль | | #2
Добавлено: 15.12.10 23:52
Забыл сообщить, что БД на MS ACCESS, а там COUNT DISTINCT как назло не поддерживается

Ответить

Номер ответа: 3
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #3
Добавлено: 17.12.10 00:01
Снеси Access, поставь MySQL, ну или MS SQL.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам