Những gì bạn cần là một HAVING
mệnh đề cần tìm COUNT(*) = 2
sau khi phân nhóm theo ngày tháng và chuyên ngành. Trên thực tế, thậm chí không cần làm tổ. (Tôi cũng đã thay thế phép kết hợp ngầm của bạn bằng dấu phẩy được phân tách bằng dấu phẩy FROM
mệnh đề có JOIN
rõ ràng , là cú pháp hiện đại được ưa thích hơn).
SELECT
v.pid,
d.speciality,
v.date,
COUNT(COUNT DISTINCT d.did) AS numvisits
FROM
visits v
JOIN Doctors d ON v.did = d.did
GROUP BY v.pid, d.speciality, v.date
HAVING COUNT(COUNT DISTINCT d.did) = 2
/* Note - depending on your RDBMS, you may
be able to use the count alias as
HAVING numvisits = 2
MySQL allows this, for ex, but MS SQL Server doesn't and I think Oracle doesn't */
SELECT
liệt kê ở đây và GROUP BY
phải cung cấp id bệnh nhân, chuyên khoa, ngày và số lần khám cho sự kết hợp tổng hợp của 3 cột đó. HAVING
sau đó, điều khoản này chỉ giới hạn ở những người có 2 lượt truy cập cho nhóm.
Để kéo chỉ các bệnh nhân từ điều này, bọc nó trong một truy vấn con:
SELECT Patients.*
FROM Patients JOIN (
SELECT
v.pid,
d.speciality,
v.date,
COUNT(COUNT DISTINCT d.did) AS numvisits
FROM
visits v
JOIN Doctors d ON v.did = d.did
GROUP BY v.pid, d.speciality, v.date
HAVING COUNT(COUNT DISTINCT d.did) = 2
) subq ON Patients.pid = subq.pid