Страница: 1 |
Страница: 1 |
Вопрос: Подсчёт уникальных значений во всех столбцах
Добавлено: 15.12.10 18:10
Автор вопроса: Zahar | Web-сайт:
Имеется большая таблица с N столбцов, в которой через SQL осуществляются различные выборки.
В моей программе необходимо осуществлять предпросмотр количества уникальных данных в каждом столбце по каждой сделанной пользователем выборке (а уже потом пользователь решает выводить выборку в таблицу или не выводить).
Всё, что сумел сообразить, выглядит примерно так:
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-сайт:
Профиль | | #1
Добавлено: 15.12.10 22:28
А если фильтровать, то, видимо, придется писать вложенный запрос.
Номер ответа: 2
Автор ответа:
Zahar
Вопросов: 91
Ответов: 67
Web-сайт:
Профиль | | #2
Добавлено: 15.12.10 23:52
Забыл сообщить, что БД на MS ACCESS, а там COUNT DISTINCT как назло не поддерживается
Номер ответа: 3
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #3
Добавлено: 17.12.10 00:01
Снеси Access, поставь MySQL, ну или MS SQL.