2011-08-11 22 views
1

我正在開發從嵌入Java代碼到Crystal Reports一些硬編碼的報告這可以在SQL中完成嗎? - 我能做到這一點在JAVA - 計算候補名單

有計算「候補名單」

我的數據模型如下所示我函數(」 VE離開了所有不相關的列和表)

每個表都表示爲與*和列被標以A + 他們的關係是
Person表1 *會話表1 *成果表

*Person table 
    +id - primary key 


*Sessions table 
    +parentid foreign key to Person.id 
    +id - primary key 
    +isValid 
    +session-name 

*Outcomes table 
    +parentid foreign key to Sessions.id 
    +id -primary key 
    +session-name 

的邏輯如下(我需要這在SQL(MSSQL優選的)):

計數以下列

符合每個結果的出現次數得到的列表每個人 和每個這些成果

的,如果有具有相同名稱作爲,結果沒有會話是唯一的結局&有效&人所以有相同的父ID爲-結果的母公司會議


我希望是有道理的:任何幫助表示讚賞

+0

編輯你的問題和注意哪些是表的主鍵。以及哪些字段用於表格之間的關係。 –

+0

它是'Person.id〜Sessions.parentid'嗎?和'Sessions.id〜Outcomes.parentid'? –

+0

完成,ypercube你是正確的 –

回答

0

類似的東西:

SELECT 
    p.id   AS personID 
    , s.id   AS sessionID 
    , s.session-name AS sessionName 
    , o.id   AS outcomeID 
    , o.session-name AS outcomeSessionName 
FROM Person AS p 
    JOIN Sessions AS s 
    ON s.parentid = p.id 
    JOIN Outcomes AS o 
    ON o.parentid = s.id 
WHERE NOT EXISTS 
     (SELECT * 
     FROM Sessions AS s2 
     WHERE s2.session-name = o.session-name 
      AND s2.isValid 
      AND s2.parentid = s.parentid 
    ) 

如果你也想算這些結果,這將是更復雜的查詢。也許最好有另一個查詢,這是你想要的東西(所有結果?每個人?)

+0

感謝您的配偶 –