Vamos a intentar una limpieza de codigo basura:
Código PHP:
<?php
error_reporting(E_ERROR | E_WARNING | E_PARSE);
mysql_connect("localhost", "root", "");
mysql_select_db("dashboard");
$sql = mysql_query("SELECT site_id FROM granjas where granja_tipo = 2");
while ($row = mysql_fetch_array($sql)) {
$granja[] = $row['site_id'];
$i++;
}
echo implode(",", $granja) . "<br>";
echo "Las Granjas son " . $i . "<br>";
$sql2 = mysql_query("SELECT DISTINCT YEAR(evento) anio FROM partos_server");
while ($row = mysql_fetch_array($sql2)) {
$anio[] = $row['anio'];
$a++;
}
echo implode(",", $anio) . "<br>";
echo "Los Años son " . $a . "<br>";
echo "<table>";
echo "<tr>";
echo "<td>Sitio</td>";
echo "<td>prom Nacido</td>";
echo "<td>Fecha</td>";
echo "<td>Semana</td>";
echo "</tr>";
for ($j = 0; $j < $i; $j++) {
for ($b = 0; $b < $a; $b++) {
$s = 0;
unset($semana);
$sql3 = mysql_query("SELECT DISTINCT(semana) as semana FROM partos_server where YEAR(evento)=" .
$anio[$b]);
while ($row = mysql_fetch_array($sql3)) {
$semana[] = $row['semana'];
$s++;
}
echo implode(",", $semana) . " AÑO " . $anio[$b] . "<br>";
for ($t = 0; $t < $s; $t++) {
$qry = "SELECT AVG(vivos) promedio, site_id, YEAR(evento) anio ";
$qry .= " FROM `partos_server` ";
$qry .= " WHERE site_id = ".$granja[$j]." and YEAR(evento) = ".$anio[$b]." AND semana = ".$semana[$t];
$query = mysql_query($qry) or die("Error en Consulta.- " . mysql_error());
echo $qry."<br>";
if($query)
{
while ($reg = mysql_fetch_array($query, MYSQL_BOTH))
{
echo "<tr>";
echo "<td>" . $site = $reg['site_id'] . "</td>";
echo "<td>" . $promedio = round($reg['promedio'], 2) . "</td>";
echo "<td>" . $anio = $reg['anio'] . "</td>";
echo "<td>" . $semana = $reg['semana'] . "</td>";
}
echo "</tr>";
}
}
}
}
echo "</table>";
?>
Lo que quisiera estacar es que el error que estás recibiendo no pertenece a la query que ejecutas en esta instancia, ya que en ninguna parte de ella aparece este bloque:
que es el indicado como cercano al error. Si hay un error, en otras palabras, es en alguna parte posterior a estas queries.
La única forma en que se pueda producir es que en alguna parte haya una consulta que contenga el "<=", y que esa consulta esté usando una variable vacía o nula, lo que explicaría que no haya ningún valor antes del AND.