PostgreSQL - Left Join, ejemplo curioso y muy importante

 
Vista:
Imágen de perfil de LUIS IVAN

Left Join, ejemplo curioso y muy importante

Publicado por LUIS IVAN (2 intervenciones) el 17/01/2014 00:02:23
Hola amigos escribo esto para que podamos compartir esta anecdota muy curiosa.
Resulta que tengo 2 tablas ( 1 Productos y la 2da product_serie) puesto que no todos los productos tienen serie he decidido tener las series en una tabla aparte con 2 campos ( id_product, serie )
he creado una vista para mostrar los resultados de ambas tablas.

create tabla vw_productos as
select id_prod,producto, tb_serie.serie
from producto
left join tb_serie on ( producto.id_prod = serie.id_product )

El resultado esta perfecto, se visualizan todos los registro de productos con sus respectivos series si es que los tiene.

Hay viene la observacion.

si hago un select mas o menos asi

Select * from vw_productos ( se miran todos los registos de la tabla productos )

Select * from vw_productos
where ( serie like '%' ) ( solo muestra los registros que tienen serie, a pesar q serie es un campo caracter ...)

Haber si me apoyan, aun que he encontrado otras formas de solucionar esto, este error me trae un poco cabezón....

Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
sin imagen de perfil
Val: 14
Ha aumentado 1 puesto en PostgreSQL (en relación al último mes)
Gráfica de PostgreSQL

Left Join, ejemplo curioso y muy importante

Publicado por Rafael (21 intervenciones) el 03/03/2014 11:40:45
Cuando haces la inserción desde el left join el campo de serie es NULO.

Cuando ejecutas el SELECT con el LIKE '%' estas dando a enteder todos aquellos que cuenten con un valor, mismo que es diferente de NULO, por ello no te devuelve los registros que no tienen serie ya que son NULOS.

Para que te resulte la busqueda como quieres debes insertar algo asi
1
2
3
4
create tabla vw_productos as
select id_prod,producto, coalesce(tb_serie.serie, ' ')
from producto
left join tb_serie on ( producto.id_prod = serie.id_product )

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar