Hello Anya, On Tue, Feb 11, 2003 at 07:51:00PM +0800, Anya wrote: > > > Dear all, > I have a table Kids which has the following fields: > > kid char(20), > favorite_fruits set('apple','pear','orange',....) > > favorite_fruits has choices of up to 64 items. > > Now I want to query the count of each fruit appears in the favorite_fruits of the >kids in the table. Is there anyway to use 'group by' to get the count, such as: >select count(*) from Kids group by favorite_fruits? > > But if use above statement, the results will group by 'apple', 'apple, pear', >'apple, pear, orange' instead of by 'apple', 'pear', 'orange' > > Or I have to do one by one such as: > select count(*) from Kids where favourite_fruits like '%apple%' > and loop against the items in the set? >
I never worked with sets, but you could try something like this: select sum(sign(find_in_set('apple', favourite_fruits))) as apples, sum(sign(find_in_set('pear', favourite_fruits))) as pears from Kids; This would give you all results on a single result row. Regards, Fred. -- Fred van Engen XB Networks B.V. email: [EMAIL PROTECTED] Televisieweg 2 tel: +31 36 5462400 1322 AC Almere fax: +31 36 5462424 The Netherlands --------------------------------------------------------------------- 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