Tal vez por aquí:
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
, Sum(cantidad
) Total
GROUP BY nrocontrato
, rut
) c
ON a.periodo
= c.periodo
AND a.nroprecontrato
= b.numero
a.periodo = $temporada
No uso la coma sino INNER JOIN porque el WHERE es una mala forma de relacionar tablas, no es optimizable, mientas que el FROM si, pero para ello tienes que escribirlos con más cuidado.
Tampoco pongo los AS porque son obsoletos, están eliminados del estándar hace años, y sólo sirven si usas DBMS muy viejos (3.x o anterior).
El error más grave que veía es que intentabas obtener en un SELECT algo que devuelve más de un campo, y una subconsulta allí debe devolver una única columna, además de que estabas haciendolo sobre una tabla que ya estás invocando en el FROM. Eso no tiene mucho sentido.