2014-05-16 3 views
0

Я слишком долго задерживался в этой проблеме.
Мне нужно объединить 3 таблицы и выполнить подсчет различных значений.
У меня есть 3 таблицы
1.User_me
ProfileID (String)
ответил (INT 1 или 0)

2.Profiles
ProfileID (String)
idLocation (интермедиат)

3.lookup_location
идентификатор (целое)
место (String)
MySQL-запрос, соединяющий 3 таблицы и подсчет

Я могу присоединиться к нам er_me и профили ON User_me.profileId = Profiles.profileId
Я могу присоединиться Профили и lookup_location ON Profiles.idLocation = lookup_location.id

В разделе Профили мне нужно подсчитать число различных значений для idLocation где User_me.profileId = Profiles .profileId
также нужно подсчитать количество Profiles.idLocation, которые User_me.responded = 1

у меня есть это:

SELECT lookup.location, count(*) as total 
FROM User_me user 
JOIN Profiles 
    ON user.profileId= profiles.profileId 
JOIN lookup_location lookup 
    ON profiles.idLocation = lookup.id 
GROUP BY profiles.idLocation 

, но мне еще нужно иметь столбец дает мне счетчик, где User_me.responded = 1
Что-то вроде:

SELECT lookup.location, count(*) as total, count(*) responded 

ответ

1

Если я понять ваш вопрос правильно, вы можете вам case заявление в count агрегат:

SELECT lookup.location, count(*) as total, 
    count(case when user.responded = 1 then 1 end) as responded 
FROM User_me user 
JOIN Profiles 
    ON user.profileId= profiles.profileId 
JOIN lookup_location lookup 
    ON profiles.idLocation = lookup.id 
GROUP BY profiles.idLocation 

Поскольку вы используете MySQL, вы также можете использовать что-то вроде sum(user.responded = 1).

+0

ДА! Спасибо!!! – altoids

Смежные вопросы