Главная страница
    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
3-17834
uncle_m16
2002-05-16 21:25
2002.06.06
Как к интербейс БД добавить Юзера


14-18158
JibSkeart
2002-04-29 12:19
2002.06.06
Как установить только BDE с дистрибутива DELPHI6 ??


1-18016
stupid
2002-05-23 15:48
2002.06.06
Притормаживание при отображении вкладки TabSheet5.


4-18196
SPeller
2002-04-05 13:43
2002.06.06
GetLastError


7-18160
Виталий_2002
2002-03-11 11:58
2002.06.06
Вопрос по установке компонент





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский