Re: Crosstab in Mysql

2005-04-25 Thread Alvaro Cobo
You guys are the best!!!. 

I have spent hours trying to solve this problema and Peter´s answer was the 
solution. I´ll write a post with the whole explanation of the problem. 

Thanks and best regards, 

Alvaro. 

PD: Mathias, I´ll send the tables with data and the solution. Thanks!. 
  - Original Message - 
  From: Peter Brawley 
  To: Alvaro Cobo 
  Cc: mysql@lists.mysql.com 
  Sent: Monday, April 25, 2005 11:02 PM
  Subject: Re: Crosstab in Mysql


  Alvaro,

  I suspect the error message refers to the subquery missing a non-aggregate 
column on which to GROUP BY.

  I may misunderstand your query--I'm not clear why you can't just write ...

  SELECT 
f.PK_partic, 
f.FK_IS, 
f.OB_familia, 
Sum( IF( insumo_or = "Animal1", cantidad_or, 0 )) AS Animal1, 
Sum( IF( insumo_or = "Animal2", cantidad_or, 0 )) AS Animal2, 
Sum( IF( insumo_or = "Animal3", cantidad_or, 0 )) AS Animal3, 
Sum( IF( insumo_or = "Animal4", cantidad_or, 0 )) AS Animal4, 
Sum( IF( insumo_or = "Animal5", cantidad_or, 0 )) AS Animal5, 
Sum( IF( insumo_or = "Animal6", cantidad_or, 0 )) AS Animal6
  FROM tbl_ISv2CRfamilia AS f
  INNER JOIN tbl_ISv2CROriginal AS a ON f.PK_partic = a.FK_partic
  GROUP BY f.FK_partic

  HTH

  PB

  -

  Alvaro Cobo wrote: 
Hi guys: 

I am quite new in SQL and I need to build a crosstab based in two tables using 
Mysql and PHP, but it is becoming quite dificult. 

I've got the next query, but it keeps giving the next error: 

"#1241 - Operand should contain 1 column(s)" 

/*GENERAL EXPLANATION OF THE QUERY

I work in a project to give animals to farmers: I have two tables: 

tbl_ISv2CRfamilia with the families which are going to receive animals. 
(PK_partic, int(11), Autonumbering ID (PK); 
FK_IS; varchar(255); Foreign key which conects to the project table
nombre_partic, varchar(255), Name of the family
OB_familia, varchar(255), community of the family)

tbl_ISv2CROriginal with the animales they actually have received. 
(FK_partic, int(11), Foreign key which conects to the family ID
insumo_or, varchar(255), Animal given
cantidad_or, int(11), number of animals given of this specie)

And I need to have a table like this: 

Family, animal1, animal2, animal3, ..., animaln
John Smith 34013... 0
*/


The query and subquiery is as follows. 

SELECT tbl_ISv2CRfamilia.PK_partic, 
tbl_ISv2CRfamilia.FK_IS, 
tbl_ISv2CRfamilia.OB_familia, 
(SELECT Sum(
IF (
insumo_or = "Animal1", cantidad_or, 0
) ) AS "Animal1", Sum(
IF (
insumo_or = "Animal2", cantidad_or, 0
) ) AS "Animal2", Sum(
IF (
insumo_or = "Animal3", cantidad_or, 0
) ) AS "Animal3", Sum(
IF (
insumo_or = "Animal4", cantidad_or, 0
) ) AS "Animal4", Sum(
IF (
insumo_or = "Animal5", cantidad_or, 0
) ) AS "Animal5", Sum(
IF (
insumo_or = "Animal6", cantidad_or, 0
) ) AS "Animal6"
FROM tbl_ISv2CROriginal
GROUP BY FK_partic
)
FROM tbl_ISv2CRfamilia
INNER JOIN tbl_ISv2CROriginal ON tbl_ISv2CRfamilia.PK_partic = 
tbl_ISv2CROriginal.FK_partic
GROUP BY FK_partic

What is wrong with that? I have tried everything, and no solution. 

Thanks in advance. 

Alvaro

  
No virus found in this incoming message.
Checked by AVG Anti-Virus.
Version: 7.0.308 / Virus Database: 266.10.2 - Release Date: 4/21/2005
  

--


  No virus found in this outgoing message.
  Checked by AVG Anti-Virus.
  Version: 7.0.308 / Virus Database: 266.10.2 - Release Date: 4/21/2005


Re: Crosstab in Mysql

2005-04-25 Thread Peter Brawley




Alvaro,

I suspect the error message refers to the subquery missing a
non-aggregate column on which to GROUP BY.

I may misunderstand your query--I'm not clear why you can't just write
...

SELECT 
  f.PK_partic, 
  f.FK_IS, 
  f.OB_familia, 
  Sum( IF( insumo_or = "Animal1", cantidad_or, 0 )) AS Animal1, 
  Sum( IF( insumo_or = "Animal2", cantidad_or, 0 )) AS Animal2, 
  Sum( IF( insumo_or = "Animal3", cantidad_or, 0 )) AS Animal3, 
  Sum( IF( insumo_or = "Animal4", cantidad_or, 0 )) AS Animal4, 
  Sum( IF( insumo_or = "Animal5", cantidad_or, 0 )) AS Animal5, 
  Sum( IF( insumo_or = "Animal6", cantidad_or, 0 )) AS Animal6
FROM tbl_ISv2CRfamilia AS f
INNER JOIN tbl_ISv2CROriginal AS a ON f.PK_partic = a.FK_partic
GROUP BY f.FK_partic

HTH

PB

-

Alvaro Cobo wrote:

  Hi guys: 

I am quite new in SQL and I need to build a crosstab based in two tables using Mysql and PHP, but it is becoming quite dificult. 

I've got the next query, but it keeps giving the next error: 

"#1241 - Operand should contain 1 column(s)" 

/*GENERAL EXPLANATION OF THE QUERY

I work in a project to give animals to farmers: I have two tables: 

tbl_ISv2CRfamilia with the families which are going to receive animals. 
(PK_partic, int(11), Autonumbering ID (PK); 
FK_IS; varchar(255); Foreign key which conects to the project table
nombre_partic, varchar(255), Name of the family
OB_familia, varchar(255), community of the family)

tbl_ISv2CROriginal with the animales they actually have received. 
(FK_partic, int(11), Foreign key which conects to the family ID
insumo_or, varchar(255), Animal given
cantidad_or, int(11), number of animals given of this specie)

And I need to have a table like this: 

Family, animal1, animal2, animal3, ..., animaln
John Smith 34013... 0
*/


The query and subquiery is as follows. 

SELECT tbl_ISv2CRfamilia.PK_partic, 
tbl_ISv2CRfamilia.FK_IS, 
tbl_ISv2CRfamilia.OB_familia, 
(SELECT Sum(
IF (
insumo_or = "Animal1", cantidad_or, 0
) ) AS "Animal1", Sum(
IF (
insumo_or = "Animal2", cantidad_or, 0
) ) AS "Animal2", Sum(
IF (
insumo_or = "Animal3", cantidad_or, 0
) ) AS "Animal3", Sum(
IF (
insumo_or = "Animal4", cantidad_or, 0
) ) AS "Animal4", Sum(
IF (
insumo_or = "Animal5", cantidad_or, 0
) ) AS "Animal5", Sum(
IF (
insumo_or = "Animal6", cantidad_or, 0
) ) AS "Animal6"
FROM tbl_ISv2CROriginal
GROUP BY FK_partic
)
FROM tbl_ISv2CRfamilia
INNER JOIN tbl_ISv2CROriginal ON tbl_ISv2CRfamilia.PK_partic = tbl_ISv2CROriginal.FK_partic
GROUP BY FK_partic

What is wrong with that? I have tried everything, and no solution. 

Thanks in advance. 

Alvaro

  
  

No virus found in this incoming message.
Checked by AVG Anti-Virus.
Version: 7.0.308 / Virus Database: 266.10.2 - Release Date: 4/21/2005
  



No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.308 / Virus Database: 266.10.2 - Release Date: 4/21/2005

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

RE: Crosstab in Mysql

2005-04-25 Thread mathias fatene
Hi,
What do you obtain with :
Select FK_partic,
Sum(IF(insumo_or = "Animal1", cantidad_or, 0) ) AS "Animal1", 
Sum(IF (insumo_or = "Animal2", cantidad_or, 0) ) AS "Animal2", 
Sum(IF (insumo_or = "Animal3", cantidad_or, 0) ) AS "Animal3", 
Sum(IF (insumo_or = "Animal4", cantidad_or, 0) ) AS "Animal4", 
Sum(IF (insumo_or = "Animal5", cantidad_or, 0) ) AS "Animal5", 
Sum(IF (insumo_or = "Animal6", cantidad_or, 0) ) AS "Animal6"
FROM tbl_ISv2CROriginal
Group by FK_partic

?


Best Regards

Mathias FATENE
 
Hope that helps
*This not an official mysql support answer
 


-Original Message-
From: Alvaro Cobo [mailto:[EMAIL PROTECTED] 
Sent: mardi 26 avril 2005 04:38
To: mysql@lists.mysql.com
Subject: Crosstab in Mysql


Hi guys: 

I am quite new in SQL and I need to build a crosstab based in two tables
using Mysql and PHP, but it is becoming quite dificult. 

I've got the next query, but it keeps giving the next error: 

"#1241 - Operand should contain 1 column(s)" 

/*GENERAL EXPLANATION OF THE QUERY

I work in a project to give animals to farmers: I have two tables: 

tbl_ISv2CRfamilia with the families which are going to receive animals. 
(PK_partic, int(11), Autonumbering ID (PK); 
FK_IS; varchar(255); Foreign key which conects to the project table
nombre_partic, varchar(255), Name of the family
OB_familia, varchar(255), community of the family)

tbl_ISv2CROriginal with the animales they actually have received. 
(FK_partic, int(11), Foreign key which conects to the family ID
insumo_or, varchar(255), Animal given
cantidad_or, int(11), number of animals given of this specie)

And I need to have a table like this: 

Family, animal1, animal2, animal3, ..., animaln
John Smith 34013... 0
*/


The query and subquiery is as follows. 

SELECT tbl_ISv2CRfamilia.PK_partic, 
tbl_ISv2CRfamilia.FK_IS, 
tbl_ISv2CRfamilia.OB_familia, 
(SELECT Sum(
IF (
insumo_or = "Animal1", cantidad_or, 0
) ) AS "Animal1", Sum(
IF (
insumo_or = "Animal2", cantidad_or, 0
) ) AS "Animal2", Sum(
IF (
insumo_or = "Animal3", cantidad_or, 0
) ) AS "Animal3", Sum(
IF (
insumo_or = "Animal4", cantidad_or, 0
) ) AS "Animal4", Sum(
IF (
insumo_or = "Animal5", cantidad_or, 0
) ) AS "Animal5", Sum(
IF (
insumo_or = "Animal6", cantidad_or, 0
) ) AS "Animal6"
FROM tbl_ISv2CROriginal
GROUP BY FK_partic
)
FROM tbl_ISv2CRfamilia
INNER JOIN tbl_ISv2CROriginal ON tbl_ISv2CRfamilia.PK_partic =
tbl_ISv2CROriginal.FK_partic GROUP BY FK_partic

What is wrong with that? I have tried everything, and no solution. 

Thanks in advance. 

Alvaro


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