Как получить количество строк 2 разных таблиц (и баз данных) в одном запросе? - PullRequest
3 голосов
/ 13 января 2012

Я получил базу данных с именами accounts и account table внутри этой базы данных. Также я получил базу данных с именем players и player table внутри этой базы данных.

Как я могу получить количество строк этих двух таблиц в одном запросе?

Я пробовал это:

SELECT
    SUM(`account`.`account`.`id`) AS 'accounts',
    SUM(`player`.`player`) AS 'players';

Но это не работает.

Ответы [ 5 ]

2 голосов
/ 13 января 2012

Простая UNION операция над двумя операторами выбора будет делать:

SELECT COUNT(*), 'Accounts' FROM Accounts.Account
UNION
SELECT COUNT(*), 'Players' FROM Players.Player

И вам необходимо указать в каждой таблице имя базы данных, поскольку они находятся в отдельных базах данных.

2 голосов
/ 13 января 2012

Если вам нужно точное количество строк (не сумма), то сделайте что-то вроде этого:

select
(select count(*) from accounts.account) as count1,
(select count(*) from players.player) as count2

или

select count(*) as `count`,"account" as `table` from accounts.account
union all
select count(*) as `count`,"player" as `table` from players.player
1 голос
/ 16 февраля 2012
SELECT COUNT(*) 
FROM (
    SELECT Id 
    FROM accounts.account 
    UNION ALL 
    SELECT player 
    FROM players.player ) AS BothTables
1 голос
/ 13 января 2012

Попробуйте:

SELECT
   COUNT(`account`.`id`) AS 'accounts',
   COUNT(`player`.`player`) AS 'players'
FROM
   `account`,
   `player`
0 голосов
/ 01 февраля 2016
with Value (nbr, name ) as
(
select count(*) amount, 'AccountsCount' as ab from accounts..account
union all
select count(*) amount, 'PlayersCount' as ab from players..player
)
select * 
from value as s
PIVOT(sum(nbr) for name in (AccountsCount, PlayersCount) ) as pvt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...