![]() |
![]() |
Правила Форума редакция от 22.06.2020 |
|
|
Окажите посильную поддержку, мы очень надеемся на вас. Реквизиты для переводов ниже. |
|
![]() |
|
Опции темы | Опции просмотра |
![]() |
![]() |
![]() |
![]() Вот собственно вопрос - имеется БД (mdb). Мордочку написал на Delphi, коннект через ADO. В базе куча полей, адресная часть периодически повторяется - Улица-Номер дома-Корпус. Мне нужно сосчитать записи, совпадающие по этим трем полям и полученные значения забить в определенное поле (это не проблема). Третий день ломаю голову как осуществить, на данный момент пробую так:
Заранее спасибо.
__________________
У победы много отцов, поражение всегда сирота. Последний раз редактировалось hack; 16.02.2010 в 17:42.. |
|
![]() |
![]() ![]() |
Реклама: | методы отбеливания зубов в стоматологии | сидения для стульев кухонных | барнхаус цена под ключ москва | купить стулья малайзия в москве | Интегрируй приложения вместе с Альбато: Wazzup Viber - синхронизация за 5 минут! |
![]() |
![]() |
Неактивный пользователь
Пол: ![]() Регистрация: 10.02.2010
Сообщений: 1
Репутация: 0
|
![]() что-то я не понял.
а почему группировкой нельзя выбрать все в самой базе? или в аксесе нет group by? |
![]() |
![]() ![]() |
![]() |
![]() |
||||||||||||||||||||||||||||||||||||||||||||||
![]()
Я же написал:
т.е. Работаю через самописную прогу, т.к. Access ненавижу с детства ![]()
__________________
У победы много отцов, поражение всегда сирота. |
|||||||||||||||||||||||||||||||||||||||||||||||
![]() |
![]() ![]() |
![]() |
![]() |
![]() Проще использовать SQL. Например: select count(street) from table where street='Виноргадная'. Подобный запрос выдает количество улиц с определенным названием. Можно добавить условия по номеру дома и т.д. Опишите конкретную задачу, попробую помочь с запросом.
|
|
![]() |
![]() ![]() |
![]() |
![]() |
![]() Что я хочу сделать:
Есть три поля c с данными по адресу (Улица - № Дома - № Корпуса) и пустое 4-е поле. | Поле_1| Поле_2 | Поле_3 | Поле_4 | | 1 ____| 1 _____| 1 _____| 2_____ | | 1_____| 1_____ | 1 _____| 2 _____| | 1 ____| 2 _____| 1 _____| 3 _____| | 1 ____| 2 _____| 1 _____| 3_____ | | 1 ____| 2 _____| 1 _____| 3_____ | | 3 ____| 1 _____| 1 _____| 4 _____| | 3 ____| 1 _____| 1 _____| 4 _____| | 3 ____| 1 ____ | 1 _____| 4 _____| | 2 ____| 3_____ | 1 _____| 1_____ | | 3 ____| 1_____ | 1_____ | 4 _____| | 3 ____| 3 _____| 3 _____| 1_____ | При добавлении записи мне нужно пробежаться по всем записям и найти дубликаты с совпадающими этими тремя полями. Например записи со значениями 1-1-1 повторяются 2 раза, соответственно в 4-е поле мне нужно поставить '2'. Записи со значениями 1-2-1 повторяются 3 раза - в четвертой поле надо проставить '3' и т.д. Причем записи могут идти не по порядку. Вариант с скулевским запросом наверно не прокатит по причине огромного кол-ва улиц (около 2000). ЗЫ Опишу общий принцип - имеется БД установленных домовых коммутаторов (сейчас около 500 шт, в дальнейшем будет 5500-6000 записей). В теории 1 коммутатор - 1 адрес, но получилось так, что на некоторых адресах пришлось установить 2,3 а то и 4 коммутатора. Естественно адрес установки у них один (Поле -1, Поле -2,Поле -3) только номер подъезда меняется, но это не важно. Отсортировать записи в DBGridEh по трем полям мне не удается, поэтому и решил этим гемороем заняться. Может есть способ попроще - буду признателен за помощь (в Твери готов и поляну накрыть). Вопрос не срочный, но хотелось бы в месячный срок уложиться.
__________________
У победы много отцов, поражение всегда сирота. Последний раз редактировалось hack; 16.02.2010 в 21:32.. |
|
![]() |
![]() ![]() |
![]() |
![]() |
Постоялец
![]() ![]() Пол: ![]() Регистрация: 13.03.2008
Адрес: Минск
Сообщений: 257
Репутация: 231
|
![]() При добавлении записи, заносите всегда в поле4 - "1". А когда захотите узнать количество сгруппируйте по первым трем полям а четвертое - SUM. Вот и узнаете количество на каждой записе.
__________________
![]() |
![]() |
![]() ![]() |
Сказали спасибо: |
![]() |
![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() Зачем отягощать БД одинаковыми записями. Проведите нормализацию. Добавте таблицу "TComm" с полями, например: IDComm (идентификатор), SerialComm (серийный номер комутатора), IDAdr (ссылка на адресс из таблицы адресов). Тогда в таблице адресов будет одна запись (1,1,1) а в таблице TComm - несколько записей со ссылкой на этот адресс.
Таблица TAdr
Таблица TComm
Запрос: SELECT Street, Dom, Korp, Count(IDComm) AS Kol FROM TAdr, TComm WHERE TAdr.IDAdr=TComm.IDAdr GROUP BY Street, Dom, Korp Результат:
У меня уже больше 22000 записей - нет проблем. P.S. Если нет необходимости идентифицировать коммутаторы, просто вводите ручками в поле_4 Вашей таблицы количество установленных коммутаторов и при изменении их количества - редактируйте соответствующую запись. Допускать же одинаковые записи в БД - крайне неэфективно. Последний раз редактировалось vidik; 17.02.2010 в 11:48.. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
![]() ![]() |
Сказали спасибо: |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
В сети одинаковые имена | Gramazeka | Скорая помощь | 10 | 25.01.2010 19:03 |
Опера грузит одинаковые картинки | tagen | Скорая помощь | 25 | 26.03.2009 17:18 |
хелп - как сосчитать сколько заглавных букв в предложении? | XXXAlex | Visual C++ / С/C++ | 15 | 20.11.2008 11:28 |
Найти одинаковые файлы - чем лучше? | Душелов | Скорая помощь | 8 | 02.08.2008 21:42 |
Помогите(сдавать срочно)-Сосчитать Гласные и Согласные в словах(код внутри) | XXXAlex | Visual C++ / С/C++ | 6 | 03.05.2008 01:53 |
|
|