Por lo pronto, trata de simplificar las cosas, y usar alias. Ayuda a poder leer la query sin tantas complicaciones:
Código SQL:
Ver originalSELECT VD.producto_nombre
FROM ventas VE
INNER JOIN ventas_detalles VD ON VE.correlativo = VD.correlativo_principal
INNER JOIN productos_compuestos PC ON VD.producto_codigo = PC.codigo_producto
INNER JOIN productos_compuestos_partes PCP ON PC.codigo_producto = PCP.parte_producto_codigo
INNER JOIN productos_terminados PT ON PCP.parte_producto_codigo = PT.codigo_producto
WHERE
(PT.nombre LIKE '%ADR%')
AND (VE.fecha_emision BETWEEN '2014.03.17' AND '2014.03.24')
AND (VE.temporal = 'F')
Luego, considerando que una query sólo devuelve NULL si no se cumplen todas las condiciones al mismo tiempo, yo te sugeriría que analices los resultaods parte por parte, a ver qué condición no se cumple.
Primero los JOIN:
Código SQL:
Ver originalSELECT VD.producto_nombre
FROM ventas VE
INNER JOIN ventas_detalles VD ON VE.correlativo = VD.correlativo_principal
INNER JOIN productos_compuestos PC ON VD.producto_codigo = PC.codigo_producto
INNER JOIN productos_compuestos_partes PCP ON PC.codigo_producto = PCP.parte_producto_codigo
INNER JOIN productos_terminados PT ON PCP.parte_producto_codigo = PT.codigo_producto
Después las ventas:
Código SQL:
Ver originalSELECT VD.producto_nombre
FROM ventas VE
INNER JOIN ventas_detalles VD ON VE.correlativo = VD.correlativo_principal
INNER JOIN productos_compuestos PC ON VD.producto_codigo = PC.codigo_producto
INNER JOIN productos_compuestos_partes PCP ON PC.codigo_producto = PCP.parte_producto_codigo
INNER JOIN productos_terminados PT ON PCP.parte_producto_codigo = PT.codigo_producto
WHERE
(VE.temporal = 'F')
Despues las fechas:
Código SQL:
Ver originalSELECT VD.producto_nombre
FROM ventas VE
INNER JOIN ventas_detalles VD ON VE.correlativo = VD.correlativo_principal
INNER JOIN productos_compuestos PC ON VD.producto_codigo = PC.codigo_producto
INNER JOIN productos_compuestos_partes PCP ON PC.codigo_producto = PCP.parte_producto_codigo
INNER JOIN productos_terminados PT ON PCP.parte_producto_codigo = PT.codigo_producto
WHERE
(VE.fecha_emision BETWEEN '2014.03.17' AND '2014.03.24')
y luego los productos terminados:
Código SQL:
Ver originalSELECT VD.producto_nombre
FROM ventas VE
INNER JOIN ventas_detalles VD ON VE.correlativo = VD.correlativo_principal
INNER JOIN productos_compuestos PC ON VD.producto_codigo = PC.codigo_producto
INNER JOIN productos_compuestos_partes PCP ON PC.codigo_producto = PCP.parte_producto_codigo
INNER JOIN productos_terminados PT ON PCP.parte_producto_codigo = PT.codigo_producto
WHERE
(PT.nombre LIKE '%ADR%') )
Si falla la primera, los JOINs no se cumplen todos.
Si falla la fecha (muy probable), el formato usado no es correcto.
Como sea, hay que depurar una a una.