Thread: Query Problem

Query Problem

From
David Costa
Date:
Hi There !!
My turn to ask for some help ;)

a friend of mine has a problem with this query:

SELECT zblog_category.catname, zblog_entry.entry_id,
zblog_entry.entrytext, zblog_entry.entrytitle,
zblog_entry.timestamp_creation, zblog_user.username,
COUNT(zblog_comment.comment_id) AS comment_amount FROM zblog_comment
RIGHT JOIN (zblog_user INNER JOIN (zblog_entry INNER JOIN
zblog_category ON (zblog_category.cat_id = zblog_entry.id_cat)) ON
(zblog_entry.id_user = zblog_user.user_id)) ON (zblog_comment.id_entry
= zblog_entry.entry_id) WHERE zblog_comment.id_entry =
zblog_entry.entry_id AND zblog_category.cat_id = zblog_entry.id_cat AND
zblog_user.user_id = zblog_entry.id_user AND
zblog_entry.timestamp_creation >= 1 AND zblog_entry.timestamp_creation
< 999999999999 GROUP BY zblog_entry.entry_id ORDER BY
zblog_entry.timestamp_creation DESC

The error we are getting is this

ERROR: column "zblog_category.catname" must appear in the GROUP BY
clause or be used in an aggregate function

any idea? we kept trying for hours to no avail *sigh* :'(

thanks in advance for your time and attention!


Regards,
David Costa, PHP-PostgreSQL Advocacy team     http://dotgeek.org
david at postgresql ddoot org                 gurugeek att php dot net
$dsn = 'pgsql://world:most_advanced@localhost/open_source_database';



Re: Query Problem

From
Ron St-Pierre
Date:
David Costa wrote:

> Hi There !!
> My turn to ask for some help ;)
>
> a friend of mine has a problem with this query:
>
> SELECT zblog_category.catname, zblog_entry.entry_id,
> zblog_entry.entrytext, zblog_entry.entrytitle,
> zblog_entry.timestamp_creation, zblog_user.username,
> COUNT(zblog_comment.comment_id) AS comment_amount FROM zblog_comment
> RIGHT JOIN (zblog_user INNER JOIN (zblog_entry INNER JOIN
> zblog_category ON (zblog_category.cat_id = zblog_entry.id_cat)) ON
> (zblog_entry.id_user = zblog_user.user_id)) ON (zblog_comment.id_entry
> = zblog_entry.entry_id) WHERE zblog_comment.id_entry =
> zblog_entry.entry_id AND zblog_category.cat_id = zblog_entry.id_cat
> AND zblog_user.user_id = zblog_entry.id_user AND
> zblog_entry.timestamp_creation >= 1 AND zblog_entry.timestamp_creation
> < 999999999999 GROUP BY zblog_entry.entry_id ORDER BY
> zblog_entry.timestamp_creation DESC
>
> The error we are getting is this
>
> ERROR: column "zblog_category.catname" must appear in the GROUP BY
> clause or be used in an aggregate function
>
> any idea? we kept trying for hours to no avail *sigh* :'(
>
> thanks in advance for your time and attention!
>
>
> Regards,
> David Costa, PHP-PostgreSQL Advocacy team     http://dotgeek.org
> david at postgresql ddoot org                 gurugeek att php dot net
> $dsn = 'pgsql://world:most_advanced@localhost/open_source_database';
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster

When using GROUP BY for one or more columns, each column must be listed
in GROUP BY or used in an aggregate function. eg:
SELECT kind, SUM(len) AS total FROM films GROUP BY kind;
 - or -
SELECT kind, len FROM films GROUP BY kind, len;