私は、異なるロールコードの総患者数を引き出すために継承した2つのクエリを持っていますが、問題は同じ数を返していることです - テーブルの1対多の関係のためにDISTINCTがこれを生成していることがわかりました以下で説明するが、隔離するためにクエリに追加条件を追加する方法がわからないよ:1(結果は、理論的には、クエリ1(結果は、理論的にははるかに大きくする必要があります)どのようにMySQL DISTINCT(COUNT)を返す異なる条件の同じ行数ですか?
SELECT count(DISTINCT p.patient)
FROM react r
INNER JOIN CasesR cr
ON cr.globalid = r.globalid
LEFT JOIN profile p
ON cr.globalid = p.globalid
WHERE r.desc = 'A'
SELECT count(DISTINCT p.patient)
FROM react r
INNER JOIN CasesR cr
ON cr.globalid = r.globalid
LEFT JOIN profile p
ON cr.globalid = p.globalid
WHERE r.desc = 'A'
AND cr.rcode = 'PS'
小さくする必要があります
クエリ
それでは、どのように本当のカウントを取得するには、このクエリを変更することができますか?キーフィールド
rrecordid (PK)
globalid (Multiples in table IE: rrecordid=1,globalid=122; rrecordid=2,globalid=333)
desc (Multiples in table IE: rrecordid=1,globalid=122; rrecordid=2,globalid=333)
CasesRキーフィールド
crecordid (PK)
globalid
(Multiples in table IE: crecordid=1,globalid=122;crecordid=2,globalid=333)
rcode (enum: 'A','B','C','D')
(multiples, globalid=122;rcode=A; globalid=122;rcode=B)
プロフィールキーフィールド
globalid (PK)
patient (Multiples in table IE: globalid=1,patient=122;globalid=2,patient=122)
を反応させますか上記のコメントがでてきているものを一緒に持参する
おかげ
2つの異なるクエリとその違いを示すサンプルデータを掲載して、期待される結果を含めることはできますか? – liquorvicar
AND cr.rcode = 'PS'を使った小集合の理論は、すべての患者がrcodeとして 'PS'を持つ場合、保証されません。 – DRapp
ところで、 'LEFT JOIN'はNULLではないので、' INNER JOIN'で置き換えることができます。 'p.patient' – newtover