2011-08-11 12 views
1

I「「はwaitlists」これはSQLで実行できますか? - 私はJAVAでそれを行うことができます - 計算Waitlistsは

私のデータモデルは以下のとおりであるを計算する関数(Iあり

埋め込まれたJavaコードからのCrystal Reportsにはいくつかのハードコードされたレポートを開発しています関連のない列とテーブル)

各テーブルは*のように表され、列が+ で表記されている彼らの関係があるのすべてを残しまし*アウトカムへ*セッション表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 

次のように論理が(私は(MSSQLが望ましい)、SQLでこれを必要とする)である。

のリストを取得するには、次の

に準拠していますそれぞれの結果の出現回数を数えます一人一人 ため、それらの成果

のそれぞれのためのユニークな成果その-結果&が有効&アルで同じ名前を持つセッションが存在しない場合そのため、成果の親セッションと同じ親IDを持っている


私はそれが理にかなって願っています:任意のヘルプは

を高く評価されているような
+0

テーブルの主キーである質問を編集します。また、どのフィールドがテーブル間の関係に使用されます。 –

+0

'Person.id〜Sessions.parentid'ですか?そして、 'Sessions.id〜Outcomes.parentid'? –

+0

done、および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

試乗のおかげで –

関連する問題