2013-08-26 4 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», а не просто подсчет количества результатов «НП» каждый «» users_profiles_account_num имеют , все они будут возвращены рядами. Мне также нужно добавить select max, чтобы получить максимальную дату 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