2014-02-05 2 views
0

Вот моя проблема: у меня есть запрос, который объединяет несколько таблиц, чтобы отображать детали некоторых заказов. Результат запроса в виде таблицы со столбцами:SQL-запрос - присоединяется + подсчет

order ID | name | count | price | location | date 

Это база данных больницы и то, что я хочу сделать, это добавить еще один столбец, который говорит, как многие пациенты были в этом месте в данный момент.

Есть еще один стол, который показывает пребывание пациента - мне нужно их пересчитать.

patient ID | location | dateFrom | dateTo 

Дело в том, что STAYS таблица показывает 2 даты - от и до, поэтому мне нужно считать каждый пациент, который присутствовал в данном месте (Ward), когда заказ был помещен.

Вот первоначальный запрос мне нужно обновить:

SELECT 
    AP_ZAMPOZ.ID_TOW AS IDTowaru, --merchandiseID 
    GMSL_TOW.NAZWA_TOW AS Nazwa, --name 
    GMSL_TOW.MNOZNIK_SYN AS Mnoznik, --quantity 
    AP_ZAMPOZ.ZAM_CENA_S AS Cena, --price 
    AP_ZAMPOZ.ZAM_IL AS Ilosc, --count 
    AP_ZAMNAG.ZAM_DATE AS DataZam, --date 
    GMSL_MAG.NAZWA_MAG AS Magazyn, --location 
    APSL_TOW_PROD.PROD_NAZWA AS Producent, --producer 
    APSL_TOW_ATC.NAZWA AS Grupa -group 
FROM 
    AP_ZAMPOZ 
JOIN 
    GMSL_TOW ON AP_ZAMPOZ.ID_TOW = GMSL_TOW.ID_TOW 
JOIN 
    AP_ZAMNAG ON AP_ZAMNAG.ZAM_ID_NAG = AP_ZAMPOZ.ZAM_ID_NAG 
JOIN 
    GMSL_MAG ON AP_ZAMNAG.ID_MAG = GMSL_MAG.ID_MAG 
JOIN 
    APSL_TOW ON AP_ZAMPOZ.ID_TOW = APSL_TOW.ID_TOW 
LEFT JOIN 
    APSL_TOW_PROD ON APSL_TOW.ID_PROD = APSL_TOW_PROD.ID_PROD 
LEFT JOIN 
    APSL_TOW_ATC ON APSL_TOW.KOD = APSL_TOW_ATC.KOD 

таблица с stays называется POBYT и имеет следующие соответствующие столбцы:

| ID_POB (ID) | IDK_JOS (location identifier) | DT_OD (date From) | DT_TO (date To) 

строк, что я хотел бы видеть, как должен выглядеть те в моем настоящем запросе + количество пациентов в данном месте на данную дату.

У кого-нибудь есть идеи, как достичь этого? Я застрял ...

+0

Это ** QUERY ** - одного «r» вполне достаточно! А также: для чего это конкретная база данных? SQL - это язык запросов, используемый многими базами данных, но знание конкретной конкретной базы данных (и какой версии!), Которую вы используете, может быть полезно для тех, кто пытается помочь. –

+0

sry - английский не мой родной язык. База данных Oracle 11g – user3274459

+0

И в зависимости от вашей RDBMS (вкус db) на сайте есть несколько примеров такого рода запросов. Это вариация пробелов и островов. –

ответ

0

проблема решена путем добавления подзапроса в качестве другого столбца SELECT. Heres код

SELECT 

. 
. 
. 
APSL_TOW_ATC.NAZWA AS Grupa 

(SELECT Count(*) 
FROM pobyt 
WHERE (TO_DATE(AP_ZAMNAG.ZAM_DATE, 'YY/MM/DD') >= TO_DATE(DT_OD, 'YY-MM-DD') AND (TO_DATE(AP_ZAMNAG.ZAM_DATE, 'YY/MM/DD') <= TO_DATE(DT_DO, 'YY-MM-DD') OR dt_do IS NULL)) 
AND IDK_JOS = GMSL_MAG.KOD_MAG) AS LiczbaPacjentow --no. of patients at given date 

FROM AP_ZAMPOZ 
. 
. 
. 

Работает отлично.

Смежные вопросы