I’m currently using the following query (simplified indeed) :
SELECT
(
SELECT COUNT(id)
FROM bla_1
WHERE id NOT IN (SELECT id FROM blahhh)
)
+
(
SELECT COUNT(id)
FROM bla_2
WHERE id NOT IN (SELECT id FROM blahhh)
)
as count
Before somebody mentions it, may i add bla_1 and bla_2 don’t contain the same data, even if with that simplified query it might seem so.
The problem here is that some ids counted by the second query are already taken care of by the first one. In other words, the second query could return ‘2’, and one of those 2 counted rows would already be counted by the first query.
So, since both queries have some ids in common that i don’t want to count twice, i came up with that :
SELECT
(
SELECT COUNT(id)
FROM bla_1
WHERE id NOT IN (SELECT id FROM blahhh)
)
+
(
SELECT COUNT(id)
FROM bla_2
WHERE id NOT IN (SELECT id FROM blahhh)
AND id NOT IN (SELECT id
FROM bla_1
WHERE id NOT IN (SELECT id FROM blahhh)
)
)
as count
You will notice that the second subquery inside the second query is the exact same query as the first one.
My problem is that i can’t get to make this work without executing the same query twice (a first time to count results, and a second time to actually retrieve those results).
Much love to the one solving that problem 🙂
Try using the UNION operation that will eliminate duplicates for you.