PostgreSQL - Actualización compleja usando USING en postgresql

 
Vista:

Actualización compleja usando USING en postgresql

Publicado por Ponce (1 intervención) el 20/05/2014 22:16:25
Buenas tardes Todos.

Tengo un problema, necesito hacer una actualización a mi base de datos, para ello tengo que agregar unas presentaciones en la tabla de costos, pero en esa tabla de costos ya tengo asignadas varias presentaciones que no estan asignadas desde el catálogo. Para explicarme mejor pondré la estructura de mis tablas

TABLA productos
CAMPOS
id serial NOT NULL
codigo character varying DEFAULT ''::character varying
nombre character varying NOT NULL

TABLA costos_prod
id serial NOT NULL
prod_id integer DEFAULT 0
pres_id integer DEFAULT 0

TABLA pres_x_prod
id serial NOT NULL
producto_id integer
presentacion_id integer

TABLA presentaciones
id serial
presentacion character varying NOT NULL

Básicamente lo que quiero es actualizar los registros que están en la tabla de costos COSTOS_PROD que no esten en la tabla de PRESENTACIONES, he intentado con LEFT JOIN, pero el problema es que como la tabla de PRES_X_PROD une a las dos tablas PRODUCTOS y PRESENTACIONES no me arroja nada, necesito ligar los id de producto y costo para que en la consulta pueda filtrar mediante un NOT NULL, bueno al menos eso creo.

Antes de hacer la actualización necesito una consulta para ver los productos que tienen la presentación en COSTOS pero que no estan asignados en PRES_X_PROD. para después borrar lógicamente (solo cambio un estatus) de los productos que tienen la presentación asignada en COSTOS pero que no estan asignadas en el catálogo de PRES_X_PROD.



espero haberme explicado bien, Gracias de antemano.

Saludos desde México
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ya encontre la solución

Publicado por Gerardo (1 intervención) el 29/05/2014 15:45:37
1
2
3
4
5
6
7
8
SELECT costos_prod.producto_id, productos.codigo, productos.nombre, costos_prod.pres_id
presentaciones.presentacion
FROM costos_prod
LEFT JOIN pres_x_prod ON costos_prod.prod_id = pres_x_prod.producto_id AND
			costos_prod.pres_id = pres_x_prod.presentacion_id
LEFT JOIN productos ON costos_prod.producto_id = productos.id
LEFT JOIN presentaciones ON costos_prod.pres_id = presentaciones.id
WHERE pres_x_prod.presentacion_id IS NULL AND productos.codigo = '0898R21'
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