Estoy reescribiendo las consultas MySQL a PostgreSQL. Tengo una tabla con artículos y otra tabla con categorías. Necesito seleccionar todas las categorías, que tiene al menos 1 artículo:cláusula HAVING en PostgreSQL
SELECT c.*,(
SELECT COUNT(*)
FROM articles a
WHERE a."active"=TRUE AND a."category_id"=c."id") "count_articles"
FROM articles_categories c
HAVING (
SELECT COUNT(*)
FROM articles a
WHERE a."active"=TRUE AND a."category_id"=c."id") > 0
No sé por qué, pero esta consulta está causando un error:
ERROR: column "c.id" must appear in the GROUP BY clause or be used in an aggregate function at character 8
Pero este resultado debe ser agrupado De todos modos o tengo que usar DISTINCT(), ¿no? –
Sí, por supuesto. Lo siento ... Corregí la consulta y proporcioné una alternativa –
'HAVING' sin' GROUP BY' es legal en SQL y también es compatible con PostgreSQL. Esto no tiene nada que ver con el problema. –