Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Consulta SQL en dos tablas - VERSUS - yo que soy un inútil

Estas en el tema de Consulta SQL en dos tablas - VERSUS - yo que soy un inútil en el foro de Mysql en Foros del Web. Rebuenas amigos, este es el problema muy simplificado: Tengo dos tablas: Productos Precios En la tabla Productos cada registro puede tener varios precios (Por ejemplo ...
  #1 (permalink)  
Antiguo 26/01/2007, 09:13
 
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 353
Antigüedad: 20 años, 5 meses
Puntos: 1
Consulta SQL en dos tablas - VERSUS - yo que soy un inútil

Rebuenas amigos, este es el problema muy simplificado:

Tengo dos tablas:

Productos
Precios

En la tabla Productos cada registro puede tener varios precios (Por ejemplo si vendemos ropa, hay tallas de un mismo producto que valen más caras), estos precios los almaceno en la tabla Precios (¿A que soy listo, jejeje?)

Ahora, necesito hacer una consulta donde solo me muestre un registro de la tabla Productos y uno solo de los precios de Precios.

Estoy intentando con un LEFT JOIN pero siempre me muestra tantos registros como precios tiene asignado un producto. ¿Alguien sabe como hacer una consulta que me de el resultado buscado?

Ejm :

Tabla Productos. Campos:

Id_producto
Nombre_Producto

Tabla Precios. Campos:

Id_Precio
Id_producto
Precio_PVP
Precio_Oferta

Quiero hacer un listado de productos mostrando un único precio por producto, si es posible, el que tenga el Precio_oferta más bajo.

Gracias de antemano
__________________
Lo menos frecuente en este mundo es vivir. La mayoría de la gente existe, eso es todo...
  #2 (permalink)  
Antiguo 26/01/2007, 09:25
 
Fecha de Ingreso: julio-2006
Mensajes: 55
Antigüedad: 17 años, 9 meses
Puntos: 0
Re: Consulta SQL en dos tablas - VERSUS - yo que soy un inútil

yo lo resolveria con una consulta secundaria .....
son mas lentas pero que barbaridad resultados que se logran

primero te explico la consulta sobre precios

select id_producto,min(precio_pvp)
from precios
group by id_producto

esta consulta te lista los productos y su precio minimo

ahora bien muestra el codigo del producto y su precio minimo cosa poco informativa porque los codigos no dicen nada

bien aca metes la consulta secundaria a la tabla productos y queda asi

select id_producto,(SELECT NOMBRE_PRODUCTO FROM PRODUCTOS WHERE ID_PRODUCTO=PRECIOS.ID_PRODUCTO),min(precio_pvp)as Precio_Minimo
from precios
group by id_producto

Te quedara como un listado donde estan tres campos

Id_producto Nombre_producto Precio_minimo


lo probe con tablas mias simulando un caso asi y funciono, si existe un modo mejor que alguien mas lo diga pero yo en mi ignorancia lo hago asi...

espero que te sirva...
  #3 (permalink)  
Antiguo 26/01/2007, 09:29
 
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 353
Antigüedad: 20 años, 5 meses
Puntos: 1
Re: Consulta SQL en dos tablas - VERSUS - yo que soy un inútil

El problema es que MySQL no acepta consultas anidadas... :(
__________________
Lo menos frecuente en este mundo es vivir. La mayoría de la gente existe, eso es todo...
  #4 (permalink)  
Antiguo 26/01/2007, 09:53
 
Fecha de Ingreso: julio-2006
Mensajes: 55
Antigüedad: 17 años, 9 meses
Puntos: 0
Re: Consulta SQL en dos tablas - VERSUS - yo que soy un inútil

tengo entendido que la version 5 si las acepta .... el otro dia con esta version escribi una similar y funciono verificare en mi casa ....estamos pendientes
a por cierto MYsql 5 con motor innodb si mal no recuerdo
  #5 (permalink)  
Antiguo 26/01/2007, 09:54
 
Fecha de Ingreso: noviembre-2006
Ubicación: México
Mensajes: 866
Antigüedad: 17 años, 5 meses
Puntos: 8
Re: Consulta SQL en dos tablas - VERSUS - yo que soy un inútil

Que tal yomesmo.

A ver intenta esta, cre que funciona en cualquier base de datos:
Código:
SELECT p.Id_producto , p.Nombre_Producto , min(c.Precio_Oferta)
FROM Productos p
    INNER JOIN Precios c ON p.Id_producto = c.Id_producto
GROUP BY p.Id_producto, p.Nombre_Producto
Saludos y suerte!
  #6 (permalink)  
Antiguo 26/01/2007, 17:07
 
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 353
Antigüedad: 20 años, 5 meses
Puntos: 1
Re: Consulta SQL en dos tablas - VERSUS - yo que soy un inútil

Nada, no hay forma.

El código que estoy utilizando es este:

Cita:
"SELECT " & _
"p.dtStart, " & _
"p.dtEnd, " & _
"p.Id, " & _
"p.ProdId, " & _
"p.CatId, " & _
"p.ProdName, " & _
"p.Thumbnail, " & _
"p.ProdDesc, " & _
"c.Price,min(c.Price_Oferta),c.Price_Distribui dor FROM (ecProduct p INNER JOIN ecSKU c ON p.ProdId = c.ProdId)" & _
"WHERE p.Display=1 " & _
"AND (p.dtStart IS NULL OR p.dtStart <= " & to_sql(now,"date") & ") " & _
"AND (p.dtEnd IS NULL OR p.dtEnd > " & to_sql(now,"date") & ") " & _
"GROUP BY p.ProdId, p.ProdName,p.dtStart,p.dtEnd,p.Id,p.CatId,p.Thumbn ail,p.ProdDesc,c.Price,Price_Distribuidor"
Las condiciones del WHERE son indispensable, pero me sigue arrojando tantos resultados como registros hay en la segunda tabla.

¿Alguien tiene un cuchillo con buen corte para mis venas?
__________________
Lo menos frecuente en este mundo es vivir. La mayoría de la gente existe, eso es todo...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:08.