Update, which may be helpful:

        The number I'm getting back (which I said is vastly too high) is in
fact the number of pictures multiplied by the number of ratings entries
for that artist.

        I wanted to be able to get those two groupings separately. Is there a
way I can do that (like with an explicit LEFT JOIN or some such), or do
I have to do two separate queries?

Brian


Brian Tiemann wrote:
> 
>         Hi--
> 
>         I'm running an art archive, and for the artist listing pages I have to
> come up with a query something like the following:
> 
> select name,dirname,sortname,pictures.artistid,count(pictures.artistid)
> as imgnum,avg(rating) as rateavg,max(uploaded) as lastmod
> from artists,pictures,ratings
> where artists.id=pictures.artistid and artists.id=ratings.artistid
> group by sortname
> order by imgnum desc
> 
>         There are three tables involved: "artists", "pictures", and "ratings".
> "artists" has all unique entries (identified by "id"). "pictures" has
> thousands of entries with multiple entries per "artistid". "ratings" has
> multiple entries per "artistid". I have to count the entries in
> "pictures" per "artistid", and I have to average the entries in
> "ratings" per "artistid".
> 
>         The problem is that running the query as I have it above, the "imgnum"
> variable (count(pictures.artistid)) is coming back vastly higher than
> what I need, which is the number of pictures-- e.g. the number of
> entries in the "pictures" table with "artistid" matching the artist it's
> grouping by.
> 
>         I think the problem has something to do with the "where" spec; I guess
> I'm just not conceptualizing the problem properly. I need to get all
> this data in one fell swoop, or else my scripts will get much slower and
> more complex. Is there any way to get COUNT() to count only the rows
> within a grouping? Or am I going about this all the wrong way?
> 
>         Many thanks in advance for any insight!
> 
> Brian Tiemann
> 
> ---------------------------------------------------------------------
> Before posting, please check:
>    http://www.mysql.com/manual.php   (the manual)
>    http://lists.mysql.com/           (the list archive)
> 
> To request this thread, e-mail <[EMAIL PROTECTED]>
> To unsubscribe, e-mail <[EMAIL PROTECTED]>
> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to