Представьте, что у меня есть такая таблица:
# | A | B | MoreFieldsHere
1 1 1
2 1 3
3 1 5
4 2 6
5 2 7
6 3 9
B связан с A в отношении 1: n.Например, таблицу можно было бы создать с помощью объединения.
Я хочу получить общее количество и число различных A.Я знаю, что могу использовать такой запрос:
SELECT v1.cnt AS total, v2.cnt AS num_of_A
FROM
(
SELECT COUNT(*) AS cnt
FROM SomeComplicatedQuery
WHERE 1=1
-- AND SomeComplicatedCondition
) v1,
(
SELECT COUNT(A) AS cnt
FROM SomeComplicatedQuery
WHERE 1=1
-- AND SomeComplicatedCondition
GROUP BY A
) v2
Однако SomeComplicatedQuery
будет сложным и медленным запросом, а SomeComplicatedCondition
будет одинаковым в обоих случаях.И я хочу, чтобы это не называлось ненормально.Кроме того, если запрос меняется, вам нужно обязательно изменить его и в другом месте, сделать его подверженным ошибкам и создать (возможно, необычную) работу.
Есть ли способ сделать это более эффективно