Я хочу посчитать количество записей в базе данных из более чем двух таблиц, которые объединены.
Например, у меня есть такая таблица.
table
jobd + name
1 | jobA
2 | jobB
tableA
imgeid + orderid + jobid
1 | 1 | 1
2 | 2 | 1
3 | 3 | 1
4 | 4 | 1 (this order is not yet started)
tableB
taskid + orderid + task + status
1 | 1 | 1 | UPDATED
2 | 1 | 1 | UPDATED
3 | 1 | 1 | COMPLETED
4 | 2 | 2 | SAVED
5 | 3 | 3 | COMPLETED
Моя проблема здесь в том, что, когда я считаю на основе статуса (@ tableB), мой запрос приводит к ОБНОВЛЕНИЮ, который имеет тот же orderid.
Это мой пример запроса, аналогичный тому, с которым я работаю.
SELECT t.name
COUNT(CASE WHEN tb.task = 1 AND tb.status <> 'COMPLETED' THEN tb.status ELSE NULL END) inprogress,
COUNT(CASE WHEN tb.task = 1 AND tb.status = 'COMPLETED' THEN tb.status ELSE NULL END) completed
FROM tableA ta
LEFT JOIN tableB tb
ON tb.orderid = ta.orderid
LEFT JOIN table t
ON t.jobid = ta.jobid
GROUP BY t.jobid;
Мои результаты что-то вроде
name + inprogress + completed
jobA | 2 | 1
Результаты выполнения должны быть только 1, потому что он имеет тот же orderid. Причина, по которой он имеет два ОБНОВЛЕННЫХ, потому что эта таблица ИСТОРИЧЕСКАЯ. Я не знаю, как можно получить различный orderid в таблице B, так что это приведет только к 1.
Суть в том, что я могу подсчитать общее количество заказов, статус которых выполняется, завершен и не запущен по заданию.
Надеюсь, мой вопрос ясен. Если у вас есть другой способ, пожалуйста, дайте мне знать. Спасибо