2015-05-13 3 views
1

Я не мог найти причину этой ошибки, когда я объединяю заголовки с фактическими данными, созданными с помощью rollup, чтобы записать их в CSV-файл.Объединение и свертывание в mysql

CREATE TABLE `products` (
`id` int(11) default NULL, 
`item` varchar(100) default NULL, 
`value` int(11) default NULL 
) ENGINE=MyISAM ; 

INSERT INTO `products` VALUES (1,'Mobiles', '1000'),(5,'Mobiles', '2000'),(8,'Mobiles', 4000),(18,'Books',100),(28,'Books', 200),(28,'Books',400); 

Когда я пытаюсь ниже запрос,

SELECT * FROM (
    (SELECT 'ITEM', 'SUM') 
    UNION 
    (select item, sum(value) from products group by item with rollup) 
) data; 

Я получаю эту ошибку

ERROR 1221 (HY000): Incorrect usage of CUBE/ROLLUP and ORDER BY 

Спасибо заранее.

ответ

0
select 'ITEM', 'SUM' 
union 
select item, sum(value) from products group by item with rollup 
; 

Результат:

+---------+------+ 
| ITEM | SUM | 
+---------+------+ 
| ITEM | SUM | 
| Books | 700 | 
| Mobiles | 7000 | 
| NULL | 7700 | 
+---------+------+ 
+1

Спасибо Владмир! Это именно то, чего я хотел. Но я не понимаю, как заданный мной запрос не работает, что на самом деле делает то же самое, кроме разделения одного запроса на подзапросы с помощью скобок. Какие-нибудь идеи? – Vishnu

+0

Если говорить откровенно, я не могу это объяснить). Rollup - очень загадочная вещь ... –

0

Вы не можете использовать этот способ.

Вам нужно сделать что-либо

select item, sum(value) from products group by item with rollup; 

или

select item, sum(value) as tot from products group by item 
union all 
select 'ITEM',sum(value) from products 

Результат первого запроса будет как

+---------+------------+ 
| item | sum(value) | 
+---------+------------+ 
| Books |  700 | 
| Mobiles |  7000 | 
| NULL |  7700 | 
+---------+------------+ 

и 2-й

+---------+------+ 
| item | tot | 
+---------+------+ 
| Books | 700 | 
| Mobiles | 7000 | 
| ITEM | 7700 | 
+---------+------+ 
0

вы могли бы использовать этот

SELECT * FROM (select item as 'ITEM', sum(value) as 'SUM' 
       from products group by item with rollup) as data 
Смежные вопросы