Re: ERROR 1111 (HY000): Invalid use of group function

2005-05-11 Thread Michael Stassen
Paul DuBois wrote:
At 18:36 + 5/11/05, shaun thornburgh wrote:
Hi,
I keep getting thw following error when i include this line:
AND COUNT(SUBSTRING(PRACT_NUMBER, 1, 4)) > 1
mysql> SELECT PRACT_NUMBER,
   -> COUNT(SUBSTRING(PRACT_NUMBER, 1, 4))
   -> FROM CSV_Upload_Data
   -> WHERE CSV_File = 'ICS'
   -> AND CHAR_LENGTH(PRACT_NUMBER) > 4
   -> AND COUNT(SUBSTRING(PRACT_NUMBER, 1, 4)) > 1
   -> AND Booking_ID = 6030
   -> GROUP BY PRACT_NUMBER;
ERROR  (HY000): Invalid use of group function
mysql>
Can anyone tell me why this is happening?
Because you cannot use aggregate functions in a WHERE clause.
WHERE determines which rows to select.
Aggregate values are calculated from the selected rows.
so you have to move this condition to the HAVING clause:
  SELECT PRACT_NUMBER,
  COUNT(SUBSTRING(PRACT_NUMBER, 1, 4))
  FROM CSV_Upload_Data
  WHERE CSV_File = 'ICS'
  AND CHAR_LENGTH(PRACT_NUMBER) > 4
  AND COUNT(SUBSTRING(PRACT_NUMBER, 1, 4)) > 1
  AND Booking_ID = 6030
  GROUP BY PRACT_NUMBER
  HAVING COUNT(SUBSTRING(PRACT_NUMBER, 1, 4)) > 1;
Michael
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:http://lists.mysql.com/[EMAIL PROTECTED]


Re: ERROR 1111 (HY000): Invalid use of group function

2005-05-11 Thread Stefan Kuhn
I would guess it's because you can't use an aggregate function in where, but 
only in having. So use select  group by PRACT_NUMBER having 
COUNT(SUBSTRING(PRACT_NUMBER, 1, 4)) > 1.
The reason is that where is applied before the count is done, whereas having 
after that. And you can't select by something which you will know after you 
have done the select.
Stefan

Am Wednesday 11 May 2005 20:36 schrieb shaun thornburgh:
> Hi,
>
> I keep getting thw following error when i include this line:
>
> AND COUNT(SUBSTRING(PRACT_NUMBER, 1, 4)) > 1
>
> mysql> SELECT PRACT_NUMBER,
> -> COUNT(SUBSTRING(PRACT_NUMBER, 1, 4))
> -> FROM CSV_Upload_Data
> -> WHERE CSV_File = 'ICS'
> -> AND CHAR_LENGTH(PRACT_NUMBER) > 4
> -> AND COUNT(SUBSTRING(PRACT_NUMBER, 1, 4)) > 1
>     -> AND Booking_ID = 6030
> -> GROUP BY PRACT_NUMBER;
> ERROR  (HY000): Invalid use of group function
> mysql>
>
> Can anyone tell me why this is happening?
>
> Thanks for your advice

-- 
Stefan Kuhn M. A.
Cologne University BioInformatics Center (http://www.cubic.uni-koeln.de)
ZÃlpicher Str. 47, 50674 Cologne
Tel: +49(0)221-470-7428   Fax: +49 (0) 221-470-7786
My public PGP key is available at http://pgp.mit.edu

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



Re: ERROR 1111 (HY000): Invalid use of group function

2005-05-11 Thread Paul DuBois
At 18:36 + 5/11/05, shaun thornburgh wrote:
Hi,
I keep getting thw following error when i include this line:
AND COUNT(SUBSTRING(PRACT_NUMBER, 1, 4)) > 1
mysql> SELECT PRACT_NUMBER,
   -> COUNT(SUBSTRING(PRACT_NUMBER, 1, 4))
   -> FROM CSV_Upload_Data
   -> WHERE CSV_File = 'ICS'
   -> AND CHAR_LENGTH(PRACT_NUMBER) > 4
   -> AND COUNT(SUBSTRING(PRACT_NUMBER, 1, 4)) > 1
   -> AND Booking_ID = 6030
   -> GROUP BY PRACT_NUMBER;
ERROR  (HY000): Invalid use of group function
mysql>
Can anyone tell me why this is happening?
Because you cannot use aggregate functions in a WHERE clause.
WHERE determines which rows to select.
Aggregate values are calculated from the selected rows.
--
Paul DuBois, MySQL Documentation Team
Madison, Wisconsin, USA
MySQL AB, www.mysql.com
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:http://lists.mysql.com/[EMAIL PROTECTED]


ERROR 1111 (HY000): Invalid use of group function

2005-05-11 Thread shaun thornburgh
Hi,
I keep getting thw following error when i include this line:
AND COUNT(SUBSTRING(PRACT_NUMBER, 1, 4)) > 1
mysql> SELECT PRACT_NUMBER,
   -> COUNT(SUBSTRING(PRACT_NUMBER, 1, 4))
   -> FROM CSV_Upload_Data
   -> WHERE CSV_File = 'ICS'
   -> AND CHAR_LENGTH(PRACT_NUMBER) > 4
   -> AND COUNT(SUBSTRING(PRACT_NUMBER, 1, 4)) > 1
   -> AND Booking_ID = 6030
   -> GROUP BY PRACT_NUMBER;
ERROR  (HY000): Invalid use of group function
mysql>
Can anyone tell me why this is happening?
Thanks for your advice

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