SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 16.01.2012 13:41:56

vivalaakam
Участник
Зарегистрирован: 30.08.2011
Сообщений: 7

Помогите составить запрос

Добрый день
Есть 2 таблицы:

CREATE TABLE `category` (
    `id` INT(10) NOT NULL AUTO_INCREMENT,
    `parent` INT(10) NULL DEFAULT NULL,
    `name` VARCHAR(50) NULL DEFAULT NULL,
    PRIMARY KEY (`id`)
)
COLLATE='utf8_general_ci'

CREATE TABLE `value` (
    `id` INT(10) NOT NULL AUTO_INCREMENT,
    `parent` INT(10) NULL DEFAULT NULL,
    `value` INT(10) NULL DEFAULT NULL,
    PRIMARY KEY (`id`)
)
COLLATE='utf8_general_ci'


В первой таблице находятся категории, во второй некоторые значения, примерное содержание таблиц:

INSERT INTO `category` (`id`, `parent`, `name`) VALUES (1, 0, 'cat1'), (2, 1, 'cat2'), (3, 1, 'cat3'), (4, 0, 'cat4'), (5, 4, 'cat5'), (6, 4, 'cat6');
INSERT INTO `value` (`id`, `parent`, `value`) VALUES (1, 2, 1), (2, 3, 2), (3, 2, 3), (4, 5, 4), (5, 6, 5), (6, 2, 6);


есть родительские и подчиненные категории,

А теперь собственно говоря проблема, как посчитать сумму для родителей сумму подчиненных категорий и сумму каждой категории одним запросом?
для наглядности ожидаемый результат
id | parent | name | sum
1  | 0        | cat1 | 12
2  | 1        | cat2 | 10
3  | 1        | cat3 | 2
4  | 0        | cat4 | 9
5  | 4        | cat5 | 4
6  | 4        | cat6 | 5


пробовал

SELECT t.* , SUM(t2.value) as sum FROM category t LEFT  JOIN value t2 ON ( t.parent = t2.parent OR t.id = t2.parent ) GROUP BY IF(t.parent = 0 , t.parent , t.id) ORDER BY t.parent , t.id


но выводит:

id | parent | name | sum
1  |  0       | cat1 | NULL
2  | 1        | cat2 | 10
3  | 1        | cat3 | 2
5  | 4        | cat5 | 4
6  | 4        | cat6 | 5

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson