2013-08-26 77 views
1

我試圖從查詢中獲得結果的總數。對我來說有點難以解釋,但我想要做的是這樣的:從我的select語句中匹配我的where語句得到每個結果的計數。Mysql計數結果不重複

SELECT 
users_profiles.account_num, 
cases_visits.patient_visit_type, 
select max (cases_visits.created_dt) 
FROM `users_profiles` 
join cases on cases.doctor_id = users_profiles.user_id 
join cases_visits on cases_visits.case_id = cases.id 
where cases_visits.patient_visit_type = 'NP' 

上面的語句給我我需要的所有數據,但每個「users_profiles.account_num」將有幾個匹配的「NP」的結果,而不是僅僅計數的「NP」結果每個「users_profiles_account_num」有量,他們將全部返回成行。我還需要添加一個選擇最大值以獲得最大NP日期與計數一起返回。

SELECT 
users_profiles.account_num, 
count(cases_visits.patient_visit_type) 
FROM `users_profiles` 
join cases on cases.doctor_id = users_profiles.user_id 
join cases_visits on cases_visits.case_id = cases.id 
where cases_visits.patient_visit_type = 'NP' 

此查詢將計算所有 'NP',但僅此而已。它只會返回一個(1)'users_profiles.account_num'結果。

換句話說,這就是我得到:

account_num| patient_visit_type 
------------------------------- 
12345  |NP 
12345  |NP 
12345  |NP 

而這正是我試圖讓:

account_num| patient_visit_type| max created_dt 
----------------------------------------------- 
12345  |3     |10/20/2020 
56746  |7     |10/20/2020 
90000  |15     |10/20/2020 
+1

所以你需要一個「GROUP BY」。 – EmCo

回答

1

像這樣的事情肯定會工作:

SELECT 
users_profiles.account_num, 
count(cases_visits.patient_visit_type), 
max(cases_visits.created_dt) 
FROM `users_profiles` 
join cases on cases.doctor_id = users_profiles.user_id 
join cases_visits on cases_visits.case_id = cases.id 
where cases_visits.patient_visit_type = 'NP' 
GROUP BY users_profiles.account_num