Предположим, у меня есть две таблицы:RIGHT OUTER JOIN не работает с ИНЕКЕ
CREATE TABLE `test_a` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
И
CREATE TABLE `test_b` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`A_id` int(11) NOT NULL,
`Amount` float NOT NULL,
`cat` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `test_b_ibfk_1` (`A_id`),
CONSTRAINT `test_b_ibfk_1` FOREIGN KEY (`A_id`) REFERENCES `test_a` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
В test_a я введенные данные
1, A
2, B
3, C
Во второй таблице я вошел следующие данные: 1, 1, 4,78, 1
2, 2, 77, 1
3, 1, 0,22, 1
4, 2, 13, 1
Задача: выбрать сумму всех сумм, сгруппированных по a_id, все данные из test_a должны появиться. Таким образом, я использую правое внешнее соединение. Когда я побежал следующий запрос:
SELECT a.name, sum(b.amount)
FROM test_b AS b RIGHT OUTER JOIN test_a AS a ON b.A_id = a.id
GROUP BY b.A_id;
Это дает результирующий набор по желанию. Как это: C - нуль
A - 5
B - 90
Но когда я ИНЕКЕ:
SELECT a.name, sum(b.amount)
FROM test_b AS b RIGHT OUTER JOIN test_a AS a ON b.A_id = a.id
**where b.cat =1**
GROUP BY b.A_id;
Я получаю результат: А - 5
B - 90
Мой вопрос: Как достичь такого же результата с предложением WHERE. (Я хочу «C - null», появится)
Благодарим заранее!
Спасибо, я попробую сейчас – GGSoft
Спасибо большое, VMai Было полезно, я буду отмечать его, но не могу голосовать из-за моей небольшой репутации, извините. – GGSoft
Было так просто !!! Еще раз спасибо!!!! – GGSoft