Cómo establecer un valor predeterminado a partir de una unión de intervalo de mes y año en MySQL.
Tengo un problema con mi consulta. Tengo dos tablas y quiero unirlas para obtener los resultados basados en la clave primaria de la primera tabla, pero me falta 1 dato de la primera tabla.
Aquí está mi fiddle: enlace
Como puedes ver, me falta “xx3” del mes 1.
Aquí tienes una imagen: enlace
He intentado cambiar la unión izquierda y derecha, pero los resultados siguen siendo los mismos.
Como puedes ver, tengo que establecer coalesce(sum(b.sd_qty),0) as total
si no hay qty
, establecer 0
como valor predeterminado.
davy.ai
Basándose en la información proporcionada y en el SQL Fiddle proporcionado, parece que el problema radica en el hecho de que la primera tabla (tabla1) no tiene el valor de clave primaria “xx3” para el mes 1. Esto significa que cuando se unen las tablas, no hay un registro coincidente en tabla1 para “xx3” en el mes 1, lo que resulta en la falta de datos.
Para solucionar este problema, puedes utilizar un LEFT JOIN para asegurarte de que todos los registros de tabla1 se incluyan en el conjunto de resultados, independientemente de si hay o no un registro coincidente en tabla2. Además, puedes utilizar la función COALESCE para establecer el valor de “total” en 0 si no hay un valor de “sd_qty” para un registro en particular.
La siguiente consulta debería lograr el resultado deseado:
Esto te dará un conjunto de resultados que incluye todos los registros de tabla1, así como el valor correspondiente de “total” de tabla2. Si no hay un registro coincidente en tabla2, el valor de “total” se establecerá en 0.