0

私は2つのテーブルを持っていimageますgradeReason. 各画像にはその品質の等級が与えられ、ユーザーは を選択して 4 つの異なる理由 ( reasonID_1reasonID_2reasonID_3reasonID_4) を選択できreasonIDます。理由の内訳はgradeReasonテーブルに格納されます。

image

imageID   auditID  reasonID_1  reasonID_2  reasonID_3  reasonID_4
-------   -------  ----------  ----------  ----------  ----------
1         123      1           13          7           3
2         124      8           13          8           6 
4         125      3           2           5           6
5         125      7           4           2           3

gradeReason

reasonID   category   name
--------   --------   ----
1          exposure   overexposed
2          exposure   underexposed
3          patient    patient moved
4          equipment  sensor too big
5          equipment  sensor too small

私が望むのは、各 reasonID が監査で使用された回数と gradeReason の名前を返すクエリです。

例えば

監査 125 -

reasonID 3 が 2 回使用されました - 名前「患者移動」、

reasonID 2 が 2 回使用されました - 名前は「露出不足」です。

私は正直に言うと、私はこれに何日も苦労しており、どこから始めればよいかさえ考えられません.

4

3 に答える 3

0

UNIONS を使用した別のオプション:-

SELECT auditId, ReasonId, category, name, SUM(cnt)
FROM
(
    SELECT ir.auditId, gr.ReasonId, gr.category, gr.name, count(*) as cnt
    FROM image ir
    INNER JOIN gradeReason gr
    ON ir.reasonID_1 = gr.ReasonId
    WHERE ir.auditId = 123
    GROUP BY ir.auditId, gr.ReasonId, gr.category, gr.name
    UNION ALL
    SELECT ir.auditId, gr.ReasonId, gr.category, gr.name, count(*) as cnt
    FROM image ir
    INNER JOIN gradeReason gr
    ON ir.reasonID_2 = gr.ReasonId
    WHERE ir.auditId = 123
    GROUP BY ir.auditId, gr.ReasonId, gr.category, gr.name
    UNION ALL
    SELECT ir.auditId, gr.ReasonId, gr.category, gr.name, count(*) as cnt
    FROM image ir
    INNER JOIN gradeReason gr
    ON ir.reasonID_3 = gr.ReasonId
    WHERE ir.auditId = 123
    GROUP BY ir.auditId, gr.ReasonId, gr.category, gr.name
    UNION ALL
    SELECT ir.auditId, gr.ReasonId, gr.category, gr.name, count(*) as cnt
    FROM image ir
    INNER JOIN gradeReason gr
    ON ir.reasonID_4 = gr.ReasonId
    WHERE ir.auditId = 123
    GROUP BY ir.auditId, gr.ReasonId, gr.category, gr.name
) Sub1
GROUP BY auditId, ReasonId, category, name
于 2013-08-08T12:37:04.947 に答える