mysql count (*) из нескольких таблиц - PullRequest
7 голосов
/ 24 января 2011

У меня есть база данных MYSQL, которая содержит данные о клиентах моих компаний, которые ежедневно пользуются нашими услугами.

каждая таблица в базе данных представляет один 24-часовой период и все транзакции клиентов, которые имели место в этот период.

Я бы хотел посчитать общее количество транзакций за несколько дней

до сих пор у меня есть оператор выбора, который делает следующее

select 
  (
    select count(customer) from 2010Dec28 
    where customer='<customer name>'
  ) as t1,
  (
    select count(customer) from 2010Dec29 
    where customer='<customer name>'
  )as t2;`

но это возвращает результат в виде двух отдельных отсчетов

| t1   | t2    |
| 1438 | 16282 |
1 row n set (0.00 sec)`

Мой вопрос заключается в том, как я могу получить сумму этих двух результатов без необходимости делать это в коде моего приложения.

Ответы [ 3 ]

12 голосов
/ 24 января 2011

Тайлер, вероятно, прав, дизайн, безусловно, неправильный!

Но это возможно ..

select 
    sum(a.count)
from
    (select count(*) as count from table1
     union all
     select count(*) as count from table2) a
10 голосов
/ 24 января 2011

Исправьте дизайн вашей базы данных.Если вы не выполняете какое-то массовое хранилище данных на миллиардах строк, отдельная таблица в день очень неправильная.

4 голосов
/ 24 января 2011

Просто поменяйте местами перекрестные соединения для прямого сабвуфера + саб, как показано ниже. Гораздо проще, чем создавать какие-либо союзы или объединения

select 
  (
    select count(customer) from 2010Dec28 
    where customer='<customer name>'
  ) + (
    select count(customer) from 2010Dec29 
    where customer='<customer name>'
  )
...