У меня есть две таблицы: "пользователь" -> "Заказ"MySQL подсчета ребенка строк таблицы с условием
ТАБЛИЦА: Пользователь
user_id
-----------
u1
u2
ТАБЛИЦА: заказ
order_id | user_id | flag
-------------------------
o1 | u1 | fA
o2 | u2 | fB
Y необходимо получить всех пользователей, подсчитывающих, сколько раз заказы с флагом 'fA'
РЕЗУЛЬТАТЫ ЧТО МНЕ НУЖНО:
user_id | orders
----------------
u1 | 1
u2 | 0
ПОПыТКЕ:
SELECT
u.user_id,
COUNT(o.order_id) AS orders
FROM
`user` AS u LEFT JOIN
`order` AS o USING (user_id)
WHERE
o.flag IS NULL OR
o.flag IN ('fA')
GROUP BY
u.user_id;
Но этот запрос за исключением пользователя = u2, потому что он не имеет приказ с флаг fA; мне нужно пользователя = u2 появляются с заказов = 0
Может быть что-то вроде этого:
SELECT
u.user_id,
COUNT(o.order_id IF o.flag IN('fA')) OR 0 AS count ...
Таблицы и данные:
CREATE TABLE `user` (user_id VARCHAR(2) NULL);
CREATE TABLE `order` (order_id VARCHAR(2) NULL,user_id VARCHAR(2) NULL,flag VARCHAR(2) NULL);
INSERT INTO `user` VALUES ('u1'), ('u2');
INSERT INTO `order` VALUES ('o1','u1','fA'),('o2','u2','fB');
Привет, я не знаю, как использовать OUTER JOIN и, найти НУ t больше об этом, спасибо за представление меня – 2009-05-06 22:25:16