Hola a todos.
Este problema me esta volviendo loco, tengo las siguientes tablas:
Tabla: tarifas (define las tarifas de carga)
codigo - itinerario - descripcion - valor
1 1 Kilogramo 1500
2 2 Kilogramo 1600
3 1 Paquete 500
4 2 Paquete 500
5 1 Volumen 10000
6 2 Volumen 10000
Tabla: empaques (define los tipos de empaques)
codigo - empaque
1 Sobre
2 Paquete
3 Caja
4 Otro
Tabla: empaque_tarifas (relaciona los empaques con las tarifas)
cod_empaque - cod_tarifa
1 3
1 4
Y tengo la siguiente SQL que se supone debería motrar TODOS los registros de la tabla tarifas y el codigo de empaque (cod_empaque) cuando corresponda:
SELECT codigo, itinerario, descripcion, valor, COALESCE(cod_empaque,0) as cod_empaque FROM tarifas LEFT JOIN empaque_tarifas ON tarifas.codigo=empaque_tarifas.cod_tarifa WHERE COALESCE(cod_empaque,0)=0 or cod_empaque=1
Y funciona perfectamente cuando solicito consultar un "cod_empaque" que existe en la tabla empaque_tarifa, como es el caso del "1", pero al cambiarlo por uno que no esté registrado, me muestra todos menos los registros de tarifas 3 y 4.
Ejemplo con criterio cod_empaque=1: (que es correcto)
codigo - itinerario - descripcion - valor - cod_empaque
1 1 Kilogramo 1500 0
2 2 Kilogramo 1600 0
3 1 Paquete 500 1
4 2 Paquete 500 1
5 1 Volumen 10000 0
6 2 Volumen 10000 0
Ejemplo con criterio cod_empaque=2: (incorrecto)
codigo - itinerario - descripcion - valor - cod_empaque
1 1 Kilogramo 1500 0
2 2 Kilogramo 1600 0
5 1 Volumen 10000 0
6 2 Volumen 10000 0
Lo que deberia mostrar es:
codigo - itinerario - descripcion - valor - cod_empaque
1 1 Kilogramo 1500 0
2 2 Kilogramo 1600 0
3 1 Paquete 500 0
4 2 Paquete 500 0
5 1 Volumen 10000 0
6 2 Volumen 10000 0
Les agradecería mucho si me pudieran ayudar, de antemano muchas gracias.