2015-12-29 3 views
0

я должен сделать сумму от 2-х различных таблиц и показать его с помощью MySQL:сумма 2 различных запросов приводит

общих комментариев из таблицы 1, всего комментарии из таблицы 2: То, что я пытался до сих пор есть

SELECT u.name as name, u.username as username, 
(SELECT SUM(total) FROM (SELECT (COUNT(nc.id)) as total FROM table1 as nc WHERE nc.user_id = u.id) UNION ALL (SELECT COUNT(pc.id) AS total FROM table2 pc WHERE pc.user_id = u.id) as finalTotal) as total_comments 
FROM user as u 
GROUP BY u.id 

Это дает мне эту ошибку :

Каждая производная таблица должна иметь свой собственный псевдоним

+1

Посмотрите на сообщение об ошибке. Это был ответ. – RubahMalam

+0

@RubahMalam, но все таблицы имеют псевдоним –

ответ

0

Перед UNION ALL поместить псевдоним, как вы даете для всех ..

SELECT u.name as name, u.username as username, 
(SELECT SUM(total) FROM (SELECT (COUNT(nc.id)) as total FROM table1 as nc WHERE nc.user_id = u.id) as vr UNION ALL (SELECT COUNT(pc.id) AS total FROM table2 pc WHERE pc.user_id = u.id) as finalTotal) as total_comments 
FROM user as u 
GROUP BY u.id 
0
SELECT u.name as name, u.username as username, 
(SELECT SUM(total) FROM 
    (SELECT (COUNT(nc.id)) as total FROM table1 as nc WHERE nc.user_id = u.id 

    UNION ALL SELECT COUNT(pc.id) AS total FROM table2 pc WHERE pc.user_id = u.id) as finalTotal) as total_comments 
FROM user as u 
GROUP BY u.id 

Удалить скобки до и после UNION ALL и проверить.

+0

позвольте мне попробовать –

1

Если я понимаю, что вам нужно, вы должны изменить запрос, как это:

select u.name,u.username,total as total_comments 
from user as u 
left join (
    select id,sum(total) as total 
    from(
     select nc.id,count(1) as total 
     from table1 as nc 
     group by nc.id 
     union all 
     select pc.id,count(1) as total 
     from table2 as pc 
     group by pc.id 
    ) as t group by id 
) comments on comments.id = u.id 
+0

это дает * NULL * в ** всего как total_comments ** –

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