2010-07-25 2 views
4

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

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

Это PHP Я использую, чтобы использовать данные: $ результат = mysql_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: 

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

ответ

3

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

SELECT 
    (SELECT COUNT(entryid) FROM rh_entries) as total, 
    (SELECT COUNT(pentryid) FROM rh_playerentries WHERE playerid=79) as attended; 
2

Для расширения на кончике 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 
) 
+0

Я попытался выше, и это говорит : 'Каждая производная таблица должна иметь свой собственный псевдоним' – Benny

2
select sum(total) from 
(
SELECT COUNT(entryid) total FROM rh_entries 
UNION 
SELECT COUNT(pentryid) total FROM rh_playerentries WHERE playerid=79 
) as t; 
Смежные вопросы