On Thu, 13 Jun 2013 08:13:29 -0400
Richard Hipp <d...@sqlite.org> wrote:

> SELECT
>   name,
>   (SELECT COUNT(food_id) FROM foods_episodes WHERE food_id=f.id) count
> FROM
>   foods f
> ORDER BY count DESC LIMIT 10;
...
> SELECT
>   name,
>   (SELECT COUNT(*) FROM foods_episodes WHERE food_id=f.id) count
> FROM
>   foods f
> ORDER BY count DESC LIMIT 10;

Why not simply

SELECT   f.name, count(e.food_id) as 'episodes'
FROM     foods as f 
OUTER
 JOIN    foods_episodes as e
ON       f.id = e.food_id
GROUP BY f.name
ORDER BY episodes DESC LIMIT 10;

This form expresses the query more algebraically and IMO is much
easier to understand. Last I checked, the use of a subquery in the
SELECT clause isn't even stardard SQL.  

(FWIW stylistically, I avoid "count" as a column name, both because
it's a keyword, and because it's vague.  A concrete noun in plural form
is more expressive.)  

--jkl
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to