私は2つのテーブルを持っています。患者と病院のフィールドを含む「tbl_a」と、コンサルテーションである「tbl_b」。今私の問題は、患者が「tbl_b」に4つのレコードを持っている場合は1としてカウントされるように、「tbl_b」に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 に答える