Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.06.06;
Скачать: [xml.tar.bz2];

Вниз

Поиск и подсчет уникальных записей в связанных таблицах   Найти похожие ветки 

 
RDA   (2002-05-16 20:55) [0]

Уважаемые мастера, срочно нужна ваша помощь.
Ситуация следующая. Есть две связанные таблицы. Отношение
один ко многим. Подскажите как по определенному критерию (определенному в дочерней таблице) выбрать уникальные записи в родительской таблице.
К примеру:
Есть клиент (Родительская таблица)- он один.
Есть обращение клиента (Дочерняя таблица) их за месяц 10 (все по разному поводу - информационные услуги, социальная помощь и т.д.) как выбрать сколько за месяц обратилось уникальных клиентов за информационными услугами (если один и тот же клиент может обратиться за месяц 10 раз только за информационными услугами, а может и нет). Уф...

Заранее благодарен любым предложениям. А может есть и стандартный подход.


 
ioSan   (2002-05-17 03:48) [1]

Александр, посмотри может что пригодится.

На примерах, с использованием Query.

Описание таблиц

Clients.dbf
------------------
ID_C CLIENT
------------------
1 Петров П.
2 Сидоров С.
3 Иванов И.
------------------

Uslugi.dbf
-----------------------------------
ID_C MES USLUGA
-----------------------------------
3 4 информационные услуги
1 5 информационные услуги
1 5 социальная помощь
1 5 информационные услуги
2 5 информационные услуги
3 5 социальная помощь
-----------------------------------
* чтоб было видно что выборка за месяц мы добавили 4 месяц.

Вопрос 1:
>> Подскажите как по определенному критерию
>> (определенному в дочерней таблице) выбрать уникальные
>> записи в родительской таблице.

Делаем выборку: "MES = 5" и "USLUGA = информационные услуги"

Это получилось стандартным SQL Builder`ем

SELECT Clients.client, Uslugi.USLUGA, COUNT( Uslugi.id_c ) counter
FROM Clients
INNER JOIN "uslugi.DBF" Uslugi
ON (Clients.ID_C = Uslugi.id_c)
WHERE (Uslugi.mes = 5)
AND (Uslugi.usluga = "информационные услуги")
GROUP BY Clients.client, Uslugi.USLUGA
HAVING COUNT( Uslugi.id_c ) > 0

Результат:
-------------------------------------------
CLIENT USLUGA COUNTER
-------------------------------------------
Петров П. информационные услуги 2
Сидоров С. информационные услуги 1
-------------------------------------------
Петров обращался аж 2 раза!))

Вопрос 2:
>> как выбрать сколько за месяц обратилось
>> уникальных клиентов за информационными услугами

Query1.RecordCount

Надеюсь все понятно, как пример.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.06.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.006 c
1-17913
andy_dn
2002-05-23 16:54
2002.06.06
Утечки памяти!


1-17896
ded_di
2002-05-27 13:03
2002.06.06
фон у грида


1-17925
Борис А.В.
2002-05-27 19:34
2002.06.06
Развернуть окно...


1-17953
Alexandr__
2002-05-28 11:39
2002.06.06
как извлечь кубический корень


3-17828
Nickolaus
2002-05-05 01:36
2002.06.06
InterBase падает. Работа стоит.!!! Подскажите!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский