This should be simple, but I haven't used a subquery in quite this way, and
have little experience with GROUP BY.

I have 2 tables

prod:        prod_id /* a unique key */
prod_rel:    prod_id /* values that tie prod_rel to prod */

A prod_id in prod might have 0 or more matching rows in prod_rel. I want to
find the prod_id of the entry in prod that has the most dependent rows in
prod_rel, and how many dependent rows it has.

SELECT MAX(c) FROM
        (SELECT COUNT(prod_rel.prod_id) AS c
          FROM prod, prod_rel
          WHERE prod.prod_id = prod_rel.prod_id GROUP BY prod_rel.prod_id)
AS t1;

gives me

+--------+
| MAX(c) |
+--------+
|      7 |
+--------+

That's all fine and dandy, but I haven't figured out how to get the actual
value of prod_id that goes with that maximum value. I tried

mysql> SELECT MAX(c), id FROM
    ->   (SELECT COUNT(prod_rel.prod_id) as c, prod_rel.prod_id as id
    ->      FROM prod, prod_rel
    ->      WHERE prod.prod_id = prod_rel.prod_id GROUP BY prod_rel.prod_id)
    ->   AS t;

and got

ERROR 1140 (42000): Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with
no
GROUP columns is illegal if there is no GROUP BY clause

I had a feeling that I couldn't just use id in the outer select, but how do
I get it? I tried adding GROUP BY t.prod_id, but that just gave me the same
error.

Please help me find my way.

Regards,

Jerry Schwartz
Global Information Incorporated
195 Farmington Ave.
Farmington, CT 06032

860.674.8796 / FAX: 860.674.8341




-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to