powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос на выборку количества записей из двух таблиц
3 сообщений из 3, страница 1 из 1
Запрос на выборку количества записей из двух таблиц
    #38522846
Redbar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Нужна помощь в составлении запроса.

Есть две таблицы news и articles. В каждой таблице есть поле datapubl (Время).
Хочу вывести количество записей из таблиц за каждый месяц следующего вида:
год месяц статей новостей
2010 7 5 20
2011 12 NULL 11

и т.д.

Пока наковырял такой запрос:
Код: sql
1.
(SELECT YEAR(datapubl) AS god, MONTH(datapubl) AS mes, 'news' AS type, COUNT(*) AS number FROM news GROUP BY god, mes) UNION (SELECT YEAR(datapubl) AS god, MONTH(datapubl) AS mes, 'articles' AS type, COUNT(*) AS number FROM articles GROUP BY god, mes) ORDER BY god DESC, mes DESC;



Т. е. таблица следующего вида

god mes type number
2010 7 news 20
2010 7 articles 5

и т.д.

Но это не совсем то, что мне нужно. Я думаю есть более простой способ решения, просто моих знаний sql явно не хватает.
Заранее спасибо.
...
Рейтинг: 0 / 0
Запрос на выборку количества записей из двух таблиц
    #38522972
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Redbar,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select 
 год
 ,месяц
 ,max(case when type='articles' then number else null end) статей
 ,max(case when type='news' then number else null end) новостей
from 
(первый_подселект)
UNION ALL
(первый_подселект)
group by 1,2
...
Рейтинг: 0 / 0
Запрос на выборку количества записей из двух таблиц
    #38525192
Redbar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir, спасибо.

Единственно пришлось добавить алиас для соединенной таблицы

Код: sql
1.
2.
3.
4.
SELECT god, mes, max(case when type='articles' then number else null end) AS numarts, max(case when type='news' then number else null end) AS numnews
FROM ((SELECT YEAR(datapubl) AS god, MONTH(datapubl) AS mes, 'news' AS type, COUNT(*) AS number FROM news GROUP BY god, mes)
UNION ALL (SELECT YEAR(datapubl) AS god, MONTH(datapubl) AS mes, 'articles' AS type, COUNT(*) AS number FROM articles GROUP BY god, mes)) AS tab
GROUP BY 1, 2 ORDER BY 1 DESC, 2 DESC;
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос на выборку количества записей из двух таблиц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]