La primera consulta no te devuelve datos porque en ese contexto el contenido de las variables ingresa como si fuese una operación aritmética, que el SQL resuelve.
Es decir, esto es lo que recibe:
Código MySQL:
Ver originalLEFT JOIN turf_carrr
ON turf_poscns.idcarrr
= turf_carrr.idcarrr
LEFT JOIN turf_jockey
ON turf_poscns.idjockey
= turf_jockey.idjockey
LEFT JOIN turf_ubiccn
ON turf_ubiccn.idubiccn
= turf_carrr.idubiccn
Y esto es lo que ejecuta:
Código MySQL:
Ver originalLEFT JOIN turf_carrr
ON turf_poscns.idcarrr
= turf_carrr.idcarrr
LEFT JOIN turf_jockey
ON turf_poscns.idjockey
= turf_jockey.idjockey
LEFT JOIN turf_ubiccn
ON turf_ubiccn.idubiccn
= turf_carrr.idubiccn
¿Se entiende?
Lo interpreta como una resta, por lo que hace la resta y los valores pasan a ser un rango sin respuestas (el rango menor/mayor está invertido y su resultado es cero).
El segundo caso debería darte resultados, porque los apostrofos se usan en SQL para encerrar cadenas de texto, con lo que MySQL las interpretará como fechas dado el formato:
Código MySQL:
Ver original LEFT JOIN turf_carrr
ON turf_poscns.idcarrr
=turf_carrr.idcarrr
LEFT JOIN turf_jockey
ON turf_poscns.idjockey
=turf_jockey.idjockey
LEFT JOIN turf_ubiccn
ON turf_ubiccn.idubiccn
=turf_carrr.idubiccn
pero sólo te los puede dar si existe algún registro
turf_poscns relacionado con un registro de
turf_carrr que pueda cumplir con
turf_poscns.idcarrr=turf_carrr.idcarrr y al mismo tiempo
turf_carrr.fecha Between '$FechaI' AND '$FechaF', de lo contrario el valor de
turf_carrr.fecha será NULL... y los NULL no devuelven datos.
¿Se entiende?
Si quieres verificarlo, haz lo siguiente:
Si esto devuelve datos, la otra consulta también debe devolverlos, y el problema no sería la consulta en si.
Ahora bien, ¿el campo turf_carrr.fecha es un DATE o DATETIME, no es así?
Pregunto para asegurarme...