2014-02-05 181 views
0

這是我的問題:我有一個查詢,連接多個表來顯示一些訂單的詳細信息。查詢結果與列的表格:SQL查詢 - 連接+計數

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

這是一個醫院數據庫和我想要做的是添加另一列說,很多患者是如何在給定日期該位置。

還有另一張表格顯示了病人的住宿情況 - 我需要統計這些數據。

patient ID | location | dateFrom | dateTo 

的事情是STAYS表顯示2個日期 - FROM和TO所以我需要計算每一位患者是存在於當訂單是給定的位置(病房)。

這裏的初始查詢我需要更新:

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(數據庫風格),在這個網站上有很多這種查詢的例子。這是差距和島嶼上的變化。 –

回答

0

問題通過將子查詢添加爲另一個SELECT列來解決。 繼承人代碼

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 
. 
. 
. 

工程很好。