SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 04.11.2016 00:27:03

Iridan
Участник
Зарегистрирован: 03.11.2016
Сообщений: 2

Вывести имена указанных систем и количество сообщений

Добрый вечер, нужна помощь, возникла проблема  с написанием запроса, условия такие: есть три таблицы 1)System, например:
System
ID    Sys_Name
1    Имясистемы1
2    Имя системы2

2) Message, в которой содержатся сообщения, отправляемые системой
Ключ: System.id = Message.sysId
Message
Id    SysId    Message
1    1    Тест
2    1    Тест1
3    2    Тест2
4    3    Тест3

3) Dictoinary, в которой каждой системе соответствует код справочника
Ключ: System.Id = Dictionary.SysId

Dictionary
Id    SysId    Code
11    1    SYSTEM_OUT
1    2    SYSTEM_IN
2    3    ТЕЕ
15    4    УЕУ

Нужно зная 2 кода систем - SYSTEM_OUT и SYSTEM_IN– написать SQL запрос, который выведет имена указанных систем и количество сообщений, переданных каждой системой.

Sys_Name    Количество сообщений

Может кто нибудь подсказать как в этом запросе правильно сделать Join вместе с COUNT, и сгруппировать по SYSTEM_OUT и SYSTEM_IN?

Неактивен

 

#2 04.11.2016 00:35:26

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Вывести имена указанных систем и количество сообщений

select Sys_Name, `Количество сообщений` from
(select SysId, count(*) `Количество сообщений` from Message where SysId in (select SysId from Dictionary where code in ('SYSTEM_OUT','SYSTEM_IN')) group by SysId) t join System s on t.sysId=s.id;

Неактивен

 

#3 04.11.2016 00:48:04

Iridan
Участник
Зарегистрирован: 03.11.2016
Сообщений: 2

Re: Вывести имена указанных систем и количество сообщений

а проще это никак сделать нельзя?

Неактивен

 

#4 04.11.2016 00:51:46

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Вывести имена указанных систем и количество сообщений

что вы подразумеваете под "проще"?

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson