MySQL - Problema consulta Join

   
Vista:

Problema consulta Join

Publicado por Edgar Guerrero (3 intervenciones) el 09/04/2012 19:24:11
Buenos dias, les cuento mi problema tengo tres tablas diseñadas asi:

producto{
cod_producto,
refrencia,
nombre,
valor,
peso,
cod_proveedor
cod_categoria
}

sede{
cod_sede,
nombre_sede
}

producto_sede{
cod_producto_sede,
cod_producto,
cod_sede
cantidad
}

Lo que sucede es que me pidieron que pudiera almacenar un producto con X caracteristicas, pero que tomara la cantidad dependiendo de cada sede, pero sin tener que agregar dos veces el producto cambiando la sede, asi que opte por realizar una tabla en la que se relacione la sede con el producto y la cantidad que se encuentra en dicha sede, ahora el problema es que quiero que cuando la tabla este sin datos me muestre los datos del producto y su sede pero con la cantidad en 0.

Finalmente logre que me mostrara parte de lo que quiero asi:

SELECT * FROM categoria c, proveedor pv, medida m, producto p LEFT OUTER JOIN
(SELECT s.NOMBRE_SEDE, ps.COD_PRODUCTO FROM sede s
LEFT OUTER JOIN producto_sede ps ON s.COD_SEDE=ps.COD_SEDE) AS codPro
ON codPro.COD_PRODUCTO=p.COD_PRODUCTO WHERE c.COD_CATEGORIA=p.COD_CATEGORIA AND pv.COD_PROVEEDOR=p.COD_PROVEEDOR AND m.COD_MEDIDA=p.COD_MEDIDA
AND(p.REFERENCIA_PRODUCTO LIKE '%A25DH001%')

Osea quiero que se muestren los datos del producto mas el nombre de sede y cantidad repitiendose por el numero de sedes agregadas aunque no tenga registros en la tabla producto_sede que en tal caso validare para que me muestre 0.
Hasta ahora solo logro con la consulta anterior que me muestre los datos del producto una sola vez y sin el nombre de la sede. Cuando deberian ser dos registros cada uno con los datos del producto mas el nombre de la sede y la cantidad.

Espero puedan ayudarme muchas gracias de ante mano.
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

Problema consulta Join

Publicado por Edgar Guerrero (3 intervenciones) el 09/04/2012 22:39:49
Probe haciendo esto:
SELECT * FROM producto p LEFT JOIN producto_sede ps ON (p.COD_PRODUCTO=ps.COD_PRODUCTO) LEFT JOIN sede s (s.COD_SEDE=ps.COD_SEDE)

Pero solo muestra los datos del producto y el nombre de sede en NULL un solo registro a pesar que tengo dos sedes agregadas.

Si cambio el ultimo LEFT por RIGHT me muestra los datos del producto en NULL y pero si el nombre de la sede dos registros como debe ser porque tengo dos sedes agregadas.

Ayuda porfavor...
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

Problema consulta Join

Publicado por Emerson Palacios emerson_palacios@hotmail.com (29 intervenciones) el 13/04/2012 15:35:22
humm. ya a ver prueba esto: Select p.nombre,nombre_sede,ifnull(cantidad,0) from sede s left join producto_sede r on s.cod_sede=r.cod_sede join producto p on p.cod_producto=r.cod_producto a ver prueba eso.
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

Problema consulta Join

Publicado por Emerson Palacios emerson_palacios@hotmail.com (29 intervenciones) el 13/04/2012 16:14:50
Ya lo pense bien pruebalo este select . Select * from (Select * from sede s left join producto_sede r on s.cod_sede=r.cod_sede) p right join sede s (s.COD_SEDE=p.COD_SEDE)
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

Problema consulta Join

Publicado por Edgar Guerrero edos_gn@hotmail.com (3 intervenciones) el 18/04/2012 16:12:36
Gracias Emerson por responder,

mira probe la segunda consulta y me aparece este error
Error Code : 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(s.COD_SEDE=p.COD_SEDE)' at line 1
(0 ms taken)
Lo que sucede es que relaciono sede y producto en una tercera tabla, si tengo dos sedees los datos del producto aparecen dos veces pero mostrando el nombre de la sede diferente y la cantidad que relaciono en la tercera tabla pero si no tengo relacion en la tabla igual quiero que me muestre los datos de producto y nombre de sede pero cantidad en 0...

Por ahora lo solucione haciendo una consulta de la tabla sede y dentro del ciclo busco el producto y la cantidad si no encuentra cantidad la valido para que sea 0 pero noce si eso sea lo mas adecuado...

gracias..
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

Problema consulta Join

Publicado por emerson palacios emerson_palacios@hotmail.com (29 intervenciones) el 18/04/2012 19:35:20
me falto el " on " seria asi Select * from (Select * from sede s left join producto_sede r on s.cod_sede=r.cod_sede) p right join sede s on (s.COD_SEDE=p.COD_SEDE), a ver pruebalo y avisass.
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