Reputation: 4519
I have this query
SELECT number_title,
(SELECT COUNT(*)
FROM poll_stemmen
) AS total_number,
(SELECT COUNT(ps.number_id)
FROM poll_stemmen
group by ps.number_id
) AS voted
FROM poll_numbers AS pn
RIGHT JOIN poll_stemmen AS ps ON ps.number_id = pn.id
GROUP BY ps.number_id
But I want to do a calculate between the voted and total_number fields
So I made this query:
SELECT number_title,
(SELECT COUNT(*)
FROM poll_stemmen
) AS total_number,
(SELECT COUNT(ps.number_id)
FROM poll_stemmen
group by ps.number_id
) AS voted, (SELECT voted) AS another_number
FROM poll_numbers AS pn
RIGHT JOIN poll_stemmen AS ps ON ps.number_id = pn.id
GROUP BY ps.number_id
But I get this error:
Reference 'voted' not supported (reference to group function)
How can I fix this?
Upvotes: 1
Views: 34
Reputation: 72175
You can just wrap your query in a sub-query. Then use its aliases any way you like in the outer query, e.g.
SELECT number_title, total_number, voted,
total_number * voted AS myCalculatedColumn
FROM (
SELECT number_title,
(SELECT COUNT(*)
FROM poll_stemmen) AS total_number,
(SELECT COUNT(ps.number_id)
FROM poll_stemmen
group by ps.number_id) AS voted
FROM poll_numbers AS pn
RIGHT JOIN poll_stemmen AS ps ON ps.number_id = pn.id
GROUP BY ps.number_id ) t
Upvotes: 1