Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Посчитать данные по столбцам 
V
    Опции темы
Акимыч
Дата 11.7.2008, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 4.6.2006
Где: Владимир

Репутация: 1
Всего: 1



Имеется запрос, который приляпан к ADOQuery:
Код

SELECT VIEW_PERSON.ID_PERSON, VIEW_PERSON.FAM, VIEW_PERSON.IM, VIEW_PERSON.OT, VIEW_PERSON.W, VIEW_PERSON.DR, VIEW_PERSON.SNILS,
VIEW_PERSON.PASP, VIEW_PERSON.SMO, VIEW_PERSON.SN_POL, SP_SPS.PS_NAME, VIEW_PERSON.OBL, VIEW_PERSON.RAY, VIEW_PERSON.TOWN,
VIEW_PERSON.UL, VIEW_PERSON.DOM, VIEW_PERSON.KV, VIEW_BL.BL_ID, VIEW_BL.PERSON_ID, VIEW_BL.NOM, VIEW_BL.BL_NOM, VIEW_BL.BL_B,
VIEW_BL.BL_E, VIEW_BL.DAYS, VIEW_BL.DIAG, VIEW_BL.TAB, VIEW_BL.OTCH_DATE, VIEW_BL.PERIOD
FROM SP_SPS INNER JOIN (VIEW_PERSON INNER JOIN VIEW_BL ON VIEW_PERSON.ID_PERSON = VIEW_BL.PERSON_ID) ON SP_SPS.ID_SPS = VIEW_PERSON.JOB;


Необходимо посчитать количество id_person (причем только уникальные значения, что-то типа distinct' а), bl_id, сумму days

Всю голову сломал!!! smile  smile 

Кстати запрос динамический и постоянно меняется путем добавления условий (WHERE)

Поможите, люди добрые!

Это сообщение отредактировал(а) Акимыч - 11.7.2008, 14:03
PM MAIL   Вверх
Frees
Дата 11.7.2008, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54



в один запрос можно положит() но это криво будет, лучше 2 отдельных запроса или сохраенка


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Vas
Дата 11.7.2008, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: 23
Всего: 28



Не понял что считать то, у вас в запрос в каждой строке будет одинаковый PERSON_ID в обоих столбцах, у Вас по ним связь в таблицах сделана. Или я что-то не догоняю?


--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
Акимыч
Дата 13.7.2008, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 4.6.2006
Где: Владимир

Репутация: 1
Всего: 1



Цитата(Vas @ 11.7.2008,  17:55)
Не понял что считать то, у вас в запрос в каждой строке будет одинаковый PERSON_ID в обоих столбцах, у Вас по ним связь в таблицах сделана. Или я что-то не догоняю?

Да, наверное я криво объяснил...

В общем ситуация такая, на форме есть EhLib грид, куда собственно данные и выводятся.

В футер этого грида нужно вывести:
1) количество уникальных значений ID_PERSON (т.е. кол-во человек, которые дает выборка) любого столбца, хоть из VIEW_PERSON, хоть из VIEW_BL;
2) количество BL_ID, (т.е. количество документов выданных отобранным людям), вот сдесь то все просто, просто считаю кол-во записей
3) сумму дней DAYS в выборке, тоже просто

Второе и третье делаю с помощью футера ехлибовского грида, все хорошо, а вот с первым косяк.

Сейчас сделал отдельный запрос где с помощью SELECT DISTINCT ID_PERSON FROM VIEW_PERSON WHERE, дальше добавляю условия отбора из основного запроса, считаю количество людей... smile

Но если запрос работает на нескольких сотнях тысяч записей, то это слегка долго...

Так вот ВОПРОС: как это всё можно упростить?!?!? Кодом, компоненами, запросом? Ваши предложения!

PM MAIL   Вверх
Vas
Дата 13.7.2008, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: 23
Всего: 28



Сделать так чтобы distinсt не использовался, выбор ускорится раза в два. При нормально построенной БД distinct по существу никогда не используется, так что смотрите связи таблиц в вашей БД и к 3 НФ ее приводите.


--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0571 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.