2013-11-13 6 views
0

У меня есть этот запрос, и я хочу, чтобы получить количество строк, но я получаю ошибку MySql: ERROR 1248 (42000): Каждая производная таблица должна иметь свой собственный псевдонимКак получить количество строк UNION, SUM MySql

SELECT SUM(total) FROM 
       (
        SELECT COUNT(1) AS total FROM toys tiw 
        LEFT JOIN item ti 
        ON tiw.item_id = ti.id 
        WHERE tiw.user_id='1785335' 
       ) 
       UNION 

       (

        SELECT COUNT(1) as total 
        FROM gadgets tfiw 
        LEFT JOIN flair_store tfs 
        ON tfiw.flair_id = tfs.id 
        WHERE tfiw.user_id='1785335' 
       ) t1 
+1

Итак, дайте * both * производным таблицам псевдоним (хотя я не уверен, что второй ему нужен) - Это просто, что этот материал MySQL не существует? – Strawberry

ответ

3

Если вы хотите, чтобы получить sum() обоих итогов, я полагаю, вы хотите использовать:

SELECT SUM(total) 
FROM 
(
    SELECT COUNT(1) AS total 
    FROM toys tiw 
    LEFT JOIN item ti 
     ON tiw.item_id = ti.id 
    WHERE tiw.user_id='1785335' 
    UNION ALL 
    SELECT COUNT(1) as total 
    FROM gadgets tfiw 
    LEFT JOIN flair_store tfs 
     ON tfiw.flair_id = tfs.id 
    WHERE tfiw.user_id='1785335' 
) d 

Примечание Я хотел бы также использовать UNION ALL. UNION ALL вернет оба значения, даже если общий счетчик будет одинаковым в обоих запросах. UNION удалит дубликаты.

Насколько вы ошибаетесь, вам не хватает псевдонима в одном из ваших подзапросов.

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