MySQL UNION с псевдонимом COUNT - PullRequest
4 голосов
/ 25 июля 2010

Я пытаюсь получить два счета из двух отдельных таблиц в один запрос SQL для использования с PHP. Это текущий запрос SQl:

SELECT COUNT(entryid) AS total FROM rh_entries UNION SELECT COUNT(pentryid) AS attended FROM rh_playerentries WHERE playerid=79

Это PHP, который я использую для использования данных: $ result = mysql_query ($ query);

$attendance = mysql_fetch_assoc($result);
echo "Total: " . $attendance['total'] 
 . " Attended: " . $attendance['attended'] 
 . " Percentage: " 
 . (int)$attendance['total'] / (int)$attendance['attended'] 
 . " <br />";

Я получаю этот вывод:

Warning: Division by zero in /home/content/g/V/i/gViscardi/html/guilds/sanctum/raidinfo/player.php on line 41
Total: 6 Attended: Percentage: 

Видимо, $ посещаемость ['Participated'] не установлена ​​должным образом. Я что-то упускаю из-за того, как работает UNION, COUNT или AS?

Ответы [ 3 ]

3 голосов
/ 25 июля 2010

Объединение объединяет содержимое двух запросов в одну таблицу. Ваши запросы имеют разные имена столбцов, поэтому объединение не будет работать должным образом. Вы хотите что-то вроде:

SELECT 
    (SELECT COUNT(entryid) FROM rh_entries) as total, 
    (SELECT COUNT(pentryid) FROM rh_playerentries WHERE playerid=79) as attended;
2 голосов
/ 28 июля 2013
select sum(total) from 
(
SELECT COUNT(entryid) total FROM rh_entries
UNION
SELECT COUNT(pentryid) total FROM rh_playerentries WHERE playerid=79
) as t;
2 голосов
/ 25 июля 2010

Чтобы раскрыть подсказку amccausl, после того, как вы получите эту единственную таблицу, вы можете выполнять над ней операции:

select sum(total) from 
(
SELECT COUNT(entryid) FROM rh_entries as total
UNION
SELECT COUNT(pentryid) as total FROM rh_playerentries WHERE playerid=79
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...