-1

私は2つのテーブルを持っています。患者と病院のフィールドを含む「tbl_a」と、コンサルテーションである「tbl_b」。今私の問題は、患者が「tbl_b」に4つのレコードを持っている場合は1としてカウントされるように、「tbl_b」に4つのレコードを持つ患者のみをカウントすることです。イベントスケジューラで実行します。要するに、すべての病院で4回の診察を受けたすべての患者を数えたいと思います。誰でもこれについて私を助けることができますか?

4

4 に答える 4

1

このソリューションを使用します。

SELECT patient
FROM tbl_b
GROUP BY patient
HAVING COUNT(1) >= 4

4回以上ではなく、正確に4回の診察を受ける患者が必要な場合はに変更し>=ます。=

おそらく、4回以上の診察を受けた患者のが必要な場合があります...その場合は、上記をラップして行数を数えることができます。SELECT

SELECT COUNT(1)
FROM
(    
    SELECT patient
    FROM tbl_b
    GROUP BY patient
    HAVING COUNT(1) >= 4
) a
于 2012-07-10T07:38:02.980 に答える
1

テーブル患者と相談を想定するpatient_idが参加

SELECT * FROM patients
JOIN (SELECT IF(COUNT(patient_id) = 4, patient_id, NULL) AS con 
    FROM consultation 
    GROUP BY patient_id) AS con 
        ON con.patient_id = patients.patient_id
GROUP BY patient_id

結合されたテーブルは、4の相談からの番号のみを取得し、他のすべてはNULLであるため、この場合の結合句は、合計4つの相談のみを行った患者の記録になります。

お役に立てれば

于 2012-07-10T08:06:20.250 に答える
0

これを試して ::

Select *, count(1) 
from table_a a 
inner join table_b b 
inner join on (a.patient_id=b.patient_id) 
group by b.patient_id having count(1) =4 
于 2012-07-10T07:35:45.133 に答える
0

これを試して

 SELECT 
         COUNT(consultation )/4 AS Patient_Number 
 FROM 
         tbl_b

 GROUP BY 
         consultation 
 HAVING
         (COUNT(consultation ) % 4) = 0
于 2012-07-10T08:37:39.283 に答える