Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Вопрос-Ответ Новый топик    Ответить
 Помогите плиз. Не пойму как сделать запрос!!!  [new]
mikola123
Member [заблокирован]

Откуда:
Сообщений: 14
БД знаю не очень =(
Имеется три таблицы (в больнице) тупизм полный, БД делали в ГорЗдраве:
-OSMOTR;
-KARTA;
-DOCTOR;

Связи OSMOTR.KVR (M:M) DOCTOR.KVR (эту проблему решил)
OSMOTR.UNICUM (M:1) KARTA.UNICUM

Значит надо сделать выборку, простую, вот этот запрос работает:

SELECT Doctor.KVR, Doctor.D_JOB, Doctor.FAM_V, Count(Doctor.KVR) AS Count_KVR
FROM karta INNER JOIN (Doctor INNER JOIN osmotr ON Doctor.KVR=osmotr.KVR) ON karta.UNICUM=osmotr.UNICUM
WHERE (((Month(karta.DATE_E))="6") And ((Year(karta.DATE_e))=Year(Now())) And ((Year(karta.BIRTH_DATE))>=Year(Now())-40)) And (((karta.ID)="8"))
GROUP BY Doctor.KVR, Doctor.D_JOB, Doctor.FAM_V, Doctor.KVR, karta.ID;

К этому запросу надо добавить поля KARTA.OMS_SER и KARTA.OMS_NUM, но так чтобы в совокупности эти поля в записях не повторялись, типа DISTINCT KARTA.OMS_SER, KARTA.OMS_NUM

Я пытался делать вложенный запрос, отбирая сначала не повторяющиеся записи, а потом из них делать выборку по первому запросу, но чет не получается. Дайте совет, поможите чем можите!!!
22 июл 08, 08:53    [5966694]     Ответить | Цитировать Сообщить модератору
 Re: Помогите плиз. Не пойму как сделать запрос!!!  [new]
mds_world
Member

Откуда: Ташкент
Сообщений: 27548
А просто вставить нужные поля в селект и груп бай это не то? Не пробовали?

Если по этим полям группировка не нужна, то можно взять подходящую из аггрегирующих функций, типа First, Min и т.д.
22 июл 08, 09:25    [5966788]     Ответить | Цитировать Сообщить модератору
 Re: Помогите плиз. Не пойму как сделать запрос!!!  [new]
mikola123
Member [заблокирован]

Откуда:
Сообщений: 14
mds_world
А просто вставить нужные поля в селект и груп бай это не то? Не пробовали?

Если по этим полям группировка не нужна, то можно взять подходящую из аггрегирующих функций, типа First, Min и т.д.


Group By незя потому что группировка идет только по этим полям, чтобы узнать количество, прошедших поцеентов. Если использовать эти поля в Group By, тогда щитать придется в ручную, а проблему повторения записей не решит:
Допустим есть запись:
OMS_SER OMS_NOM
1 GOB06 123456
2 GOB06 123456
3 GOB06 654321

Для Group By OMS_SER - будут все одиниковыми, хотя записи 1 и 2 одинаковая, 3 отличается. А надо исключить либо 1 либо 2

Думаю First использовать так же не получиться, т.к. необходимо одновременное удовлетворение условий не повторения 1 и 2 поля
22 июл 08, 09:48    [5966880]     Ответить | Цитировать Сообщить модератору
 Re: Помогите плиз. Не пойму как сделать запрос!!!  [new]
Maxim_Ultrik1
Member

Откуда:
Сообщений: 669
mikola123
БД знаю не очень =(
Имеется три таблицы (в больнице) тупизм полный, БД делали в ГорЗдраве:
-OSMOTR;
-KARTA;
-DOCTOR;

Связи OSMOTR.KVR (M:M) DOCTOR.KVR (эту проблему решил)
OSMOTR.UNICUM (M:1) KARTA.UNICUM

Значит надо сделать выборку, простую, вот этот запрос работает:

SELECT Doctor.KVR, Doctor.D_JOB, Doctor.FAM_V, Count(Doctor.KVR) AS Count_KVR
FROM karta INNER JOIN (Doctor INNER JOIN osmotr ON Doctor.KVR=osmotr.KVR) ON karta.UNICUM=osmotr.UNICUM
WHERE (((Month(karta.DATE_E))="6") And ((Year(karta.DATE_e))=Year(Now())) And ((Year(karta.BIRTH_DATE))>=Year(Now())-40)) And (((karta.ID)="8"))
GROUP BY Doctor.KVR, Doctor.D_JOB, Doctor.FAM_V, Doctor.KVR, karta.ID;

К этому запросу надо добавить поля KARTA.OMS_SER и KARTA.OMS_NUM, но так чтобы в совокупности эти поля в записях не повторялись, типа DISTINCT KARTA.OMS_SER, KARTA.OMS_NUM

Я пытался делать вложенный запрос, отбирая сначала не повторяющиеся записи, а потом из них делать выборку по первому запросу, но чет не получается. Дайте совет, поможите чем можите!!!


Если реально хочешь получит запрос просто напиши условия задачи что бы понятно было... разбираться в сиквеле лень если честно. И какая это БД?
22 июл 08, 13:33    [5968666]     Ответить | Цитировать Сообщить модератору
 Re: Помогите плиз. Не пойму как сделать запрос!!!  [new]
AndreTM
Member

Откуда: Где-то в вологодских лесах...
Сообщений: 6901
Если в KARTA есть несколько разных записей OMS_SER, OMS_NOM
на одно и то же KARTA.UNICUM, то и не получится. Надо отбирать
одно из значений. Либо опишите условия подробнее.
23 июл 08, 21:04    [5976786]     Ответить | Цитировать Сообщить модератору
Все форумы / Вопрос-Ответ Ответить