Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Mysql (http://www.forosdelweb.com/f86/)
-   -   Cruce de tablas complicado (http://www.forosdelweb.com/f86/cruce-tablas-complicado-405292/)

Rocket 28/06/2006 09:36

Cruce de tablas complicado
 
hola
estoy haciendo un sistema de facturacion donde los precios de los productos son distintos para cada cliente entonces me hice 2 tablas, la de productos y precios.

productos
----------
idProducto
nombre
precio

precio
----------
idPrecio
idCliente
idProducto
precio

como ven el producto puede tener un precio por defecto para todos los clientes.

el problema ke tengo es cuando kiero mostrar los precios de todos los productos para un cliente especifico.

estaba probando con 2 querys dentro de usando "union". la primera seria uniendo productos y precio donde el id del producto sea el mismo y filtrando por idcliente, y funciona.

la segunda seria sacar todos los productos ke estan en productos pero ke no estan en la primera consulta y ahi no funciona por ke me los muestra todos.

la consulta es esta:

SELECT pro. * , pre.precio precioC
FROM producto pro, precio pre
WHERE (
pro.idproducto = pre.producto_idproducto
)
AND (
pre.cliente_idcliente =4
)
UNION SELECT pro. * , pro.precio precioC
FROM producto pro
LEFT JOIN (

SELECT pro. * , pre.precio precioC
FROM producto pro, precio pre
WHERE (
pro.idproducto = pre.producto_idproducto
)
AND (
pre.cliente_idcliente =4
)
)pre ON ( pro.idproducto = pre.idproducto )

alguien ke me ayude porfa... :D

PequeñoMauro 28/06/2006 11:26

Hola:
Una consulta: veo que las dos tablas tienen como campos, "precio", cual de los dos manejas para tu consulta?.
Otro punto: no entiendo bien lo que deseas realizar...
Cita:

el problema ke tengo es cuando kiero mostrar los precios de todos los productos para un cliente especifico.
Aqui lo especificas es cierto, pero en el siguiente comentario, agregas una condición más al select, que es lo que no entiendo, para que usas el UNION?.
Disculpa si no entendi bien...
Saludos

Rocket 28/06/2006 11:33

hola, gracias por responder.

los productos tienen un precio normal pero tambien pueden tener un precio especial para cada cliente, por eso tengo el precio en las 2 tablas y un producto puede no estar dentro de la tabla precio.

y lo ke kiero hacer es una consulta ke me muestre todos los productos con los precios especiales de los clientes, y si el producto no esta en la tabla de precios especiales ke me muestre el precio normal.

por eso se me ocurrio ke podia servir usando 2 querys en una.

se entendio un poco mas ahora?

saludos

PequeñoMauro 28/06/2006 14:19

Hola:
Podrias hacerlo de esta forma

Código:

SELECT pro. * , pre.precio precioC
FROM producto pro, precio pre
WHERE pro.idproducto = pre.producto_idproducto AND
          pre.cliente_idcliente =4
UNION
 select pro.*,pre.precio from producto pro left join precio pre on
 pro.idpro=pre.idpro
 where pre.idpro is null;


Rocket 28/06/2006 15:26

genial, me faltaba el is null

pero no entiendo porke

gracias

PequeñoMauro 28/06/2006 16:04

Puedes verificar esta página:
http://dev.mysql.com/doc/refman/5.0/...ubqueries.html
Saludos


La zona horaria es GMT -6. Ahora son las 23:42.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.