Aún no queda claro qué tipo de columna usas para guardar la fecha, y eso es importante a la hora de realizar conversiones.
Ahora bien, analizando tu sentencia:
Código MySQL:
Ver original SUM(R.importetotal
) total
, R.importetotal,
COUNT(A.codachura
) cantidadachuras
, SUM(A.importeventaachura
) totalachuras
, C.nombre
R.fecha_salida = '20100426'
A.fecha_salida = '20100426'
Esto, para devolver registros, tiene que cumplir dos condiciones:
1. La fecha de salida de
res y de
achuras debe ser sí o si 26/04/2010.
2. De haber por lo menos un registro de
res cuyo codcliente esté al mismo tiempo en otro registro de ese día de
achuras, y también que sea un cliente válido.
El tema aquí es que ambos grupos de condiciones deben cumplirse al mismo tiempo para que haya registros devueltos. Es decir: Sólo devolverá registros si al mismo tiempo hay salidas de res y de achuras... Si hay de uno sólo, no lo devolverá.
El otro problema de lógica se da porque el orden de las tablas hace que sólo se considere un registro para el caso de que haya res en salida. Si no la hay, el análisis jamás llegará al de achuras. Esto se debe a que el orden de lectura de las tablas es de izquierda a derecha.
Un esquema más flexible sería:
Código MySQL:
Ver original SUM(R.importetotal
) total
, R.importetotal,
COUNT(A.codachura
) cantidadachuras
, SUM(A.importeventaachura
) totalachuras
, C.nombre
LEFT JOIN achuras A
ON C.codcliente
= A.codcliente
R.fecha_salida = '20100426'
A.fecha_salida = '20100426'
En ese caso lo más importante son los clientes, que siempre existen, mientras que sumará los valores de una u otra tabla si y sólo si hay valores relacionados con el cliente para hacerlo.
Un punto aparte es este segmento:
Esto parece correcto, pero puede dar lugar a errores por truncado de datos, si el grupo acumulado excede los 100 caracteres, o por compatibilidad de datos devueltos, ya que en determinado contexto puede estar devolviendo un BLOB y no un CHAR (realiza una conversión implícita por las características del dato devuelto).
En definitiva, hay que verificar el resultado de este campo.
Espero que te sea útil.