Cita:
Iniciado por gnzsoloyo
Normalmente el mensaje debería ser diferente. debería indicar "unknow column name" o algo así, y no "columna '' no válida".
Pero la cosa parece relativamente simple: Si la columna "período" está presente en todas las tablas que se piden, el error está en la tabla derivada "c", porque no se está pidiendo que también devuelva ese campo:
Código MySQL:
Ver original a.Zona,
a.numero,
a.nombre,
a.variedad,
a.tmestimadas tmrecepcionadas,
b.potrero,
b.hassembradas superficie,
b.v1_rendimiento rdtoesperado,
(b.v1_rendimiento * b.hassembradas) tmestimadas,
c.nrocontrato,
c.rut
ag_Contrato a
INNER JOIN Ag_Visitaterreno v
ON a.numero
= v.nrocontrato
AND a.periodo
= v.periodo
(SELECT nrocontrato
, rut
, periodo
, Sum(cantidad
) Total
GROUP BY nrocontrato
, rut
) c
ON a.periodo
= c.periodo
AND a.nroprecontrato
= b.numero
a.periodo = $temporada
Cuando generas una tabla derivada en el FROM por medio de una subconsulta, tienes que indicar en esa subconsulta que devuelva todos los campos que se van a usar luego, y el ON siguiente está pidiendo precisamente el campo "periodo" de la tabla "Ag_recepcion2011".
Ya... primero puse el periodo dentro del select y me salio esto: La columna 'Ag_recepcion2011.periodo' de la lista de selección no es valida, porque no esta contenida en una funciun de agregado ni en la clausula GROUP BY...
Entonces la agregue en el Group By y me quedo así:
Código SQL:
Ver originalSELECT DISTINCT
a.Zona,
a.numero,
a.nombre,
a.variedad,
a.tmestimadas tmrecepcionadas,
b.potrero,
b.hassembradas superficie,
b.v1_rendimiento rdtoesperado,
(b.v1_rendimiento * b.hassembradas) tmestimadas,
c.nrocontrato,
c.rut
FROM
ag_Contrato a
INNER JOIN Ag_Potrero b ON a.periodo = b.periodo
INNER JOIN Ag_Visitaterreno v ON a.numero = v.nrocontrato AND a.periodo = v.periodo
INNER JOIN (SELECT nrocontrato, rut, periodo, SUM(cantidad) Total FROM Ag_recepcion2011 GROUP BY nrocontrato, rut, periodo) c ON a.periodo = c.periodo AND a.nroprecontrato = b.numero
WHERE
a.periodo = $temporada
ORDER BY a.numero";
Ahora al ejecutar la consulta se demora unos 10 segundos para luego en el post me aparezca "ABORTED" y con causas desconocidas del error.