2016-12-20 4 views
0

я есть таблицы пользователя, участник и чат. Мне нужно, чтобы все пользователи находились в определенном чате и количестве чатов, которые пользователь вводил по имени чата. Например текущие таблицы:Как объединить два SQL-запросов в одном

user  chat   participant 
id|name id|name  user_id|chat_id 
1|Mike 1|School   1|1 
2|John 2|Football   2|1 
3|Sara 3|Gym    1|2 
           3|3 

И по ключевому слову «Школа» Я хочу, чтобы это

Mike|2 
John|1 

У меня есть два запроса, чтобы получить первый и второй столбец в результате, но не знаю, как объединить это:

SELECT user.name FROM user 
JOIN participant ON (user.id = participant.user_id) 
JOIN chat ON (participant.chat_id = chat.id) WHERE chat.name = 'School'; 

это дает мне

Mike 
John 

И

SELECT user.name, COUNT(*) FROM user 
JOIN participant ON (user.id = participant.user_id) GROUP BY user.name; 

возвращает

John|1 
Mike|2 
Sara|1 

Так как совместить это?

+0

, что конечный результат вы хотите? –

+0

pls дают желаемый результат –

+0

@ Mr.Bhosale «И по ключевому слову« Школа »Я хочу получить это« – Roman

ответ

1

TRY ЭТУ

SELECT p1.name, COUNT(p.user_id) totUser 
FROM participant p 
INNER JOIN (select u.id, u.name FROM participant p 
    inner JOIN chat c ON c.id = p.[chat_id] 
    INNER JOIN user u ON u.id = p.user_id 
    AND c.name = 'School') p1 ON p1.id = p.user_id 
GROUP BY p1.name 
+0

«Ошибка: рядом с« #частником »: синтаксическая ошибка», но без «#» работает хорошо, спасибо! – Roman

+0

Он должен быть исправлен, я использовал временную таблицу для целей тестирования, спасибо, что узнал меня. – Susang

1

с использованием подзапроса и соединяет:

  select u.name,count(p.chat_id) as 'Count' from user u 
      inner join participant p on p.user_id = u.id 
      where 
      p.user_id in (select user_id from participant pp inner join chat cc on cc.id = pp.chat_id where 
      cc.name = 'School')  
      group by u.name 
      order by Count desc 

Output :

enter image description here

+0

Он работает, спасибо – Roman

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