2012-01-13 2 views
3

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

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

Я попытался это:

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

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

ответ

2

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

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

Try:

SELECT 
    COUNT(`account`.`id`) AS 'accounts', 
    COUNT(`player`.`player`) AS 'players' 
FROM 
    `account`, 
    `player` 
+0

Получение это сообщение: 'SQLSTATE [3D000] : Недопустимое имя каталога: 1046 Не выбрана база данных – Cyclone

2

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

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

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

1
SELECT COUNT(*) 
FROM (
    SELECT Id 
    FROM accounts.account 
    UNION ALL 
    SELECT player 
    FROM players.player) AS BothTables 
0
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 
+0

Просьба пояснить, как этот код решает вопрос. Это поможет OP узнать из вашего ответа, а также будущих поисковиков. – SnareChops

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