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

¿Se puede hacer esto?

Estas en el tema de ¿Se puede hacer esto? en el foro de Mysql en Foros del Web. Tengo varias tablas que intervienen en cada consulta. ·Evolución: Precio Fecha IdProducto ·Producto: IdProducto Nombre Origen Características Quiero sacar la evolución del precio del producto ...
  #1 (permalink)  
Antiguo 26/03/2007, 10:27
 
Fecha de Ingreso: noviembre-2005
Mensajes: 15
Antigüedad: 18 años, 4 meses
Puntos: 0
¿Se puede hacer esto?

Tengo varias tablas que intervienen en cada consulta.

·Evolución:
Precio
Fecha
IdProducto

·Producto:
IdProducto
Nombre
Origen
Características

Quiero sacar la evolución del precio del producto y sus datos (Nombre, Origen, Características) para después operar con PHP. Es decir, necesito que me devuelva en cada resultado los datos y los precios de las fechas que introduzca en la consulta.
Podría hacer algo como:
Código HTML:
SELECT * FROM Evolución,Producto WHERE Evolución.IdProducto=Producto.IdProducto
O también usar joins, pero me saldrían igual los resultados en varias filas, en vez de obtener algo así por línea:
Precio (Fecha1) Precio (Fecha2) Precio (Fecha3) Precio (Fecha4) ... IdProducto Nombre Origen Características

Si alguien me pudiera ayudar estaría muy agradecido.
Muchas gracias.
  #2 (permalink)  
Antiguo 26/03/2007, 12:40
 
Fecha de Ingreso: marzo-2007
Mensajes: 347
Antigüedad: 17 años
Puntos: 2
Re: ¿Se puede hacer esto?

Creo que como lo pusiste esta bien, solo que en el where hay que poner comillas, osea, algo = 'otro algo' eso siempre va entre comillas, que no se te olvide, al menos que utilizes alguna funcion como now().

Un saludo
  #3 (permalink)  
Antiguo 27/03/2007, 06:08
 
Fecha de Ingreso: enero-2004
Mensajes: 63
Antigüedad: 20 años, 3 meses
Puntos: 0
Re: ¿Se puede hacer esto?

Creo que se refiere a que en la tabla evolución, hay varios registros por cada producto por lo que con esa consulta le saldrán duplicados.

Creo que lo que quieres no se puede. Se me ocurren solo dos posibilidades:

1. Que después de obtener los datos de la tabla "producto", hagas una consulta a la tabla "evolucion" por cada ID de producto obtenido.

2. Que después de obtener los datos de la tabla "producto", hagas una consulta a la tabla "evolucion" incluyendo cada ID de producto obtenido, es decir, que el script genere dinámicamente una parte del where de este tipo: (IdProducto = '1' || IdProducto = '2' ||...) y luego ordenas los datos cómo quieras con tu software.

Un saludo
  #4 (permalink)  
Antiguo 27/03/2007, 23:58
 
Fecha de Ingreso: noviembre-2005
Mensajes: 15
Antigüedad: 18 años, 4 meses
Puntos: 0
Re: ¿Se puede hacer esto?

Muchísimas gracias a los 2 por la respuesta.

javi_bus, efectivamente me refería a eso. Ahora probaré esas opciones a parte de otra más chapucera con php en plan que sólo ponga los datos del producto cuando cambie de identificador o nombre.

Si a alguien se le ocurre alguna otra forma, estaría encantado de oirla.
  #5 (permalink)  
Antiguo 28/03/2007, 12:40
 
Fecha de Ingreso: enero-2004
Mensajes: 63
Antigüedad: 20 años, 3 meses
Puntos: 0
Re: ¿Se puede hacer esto?

Perfecto Sefrot. A ver si te va bien. Por cierto, me di cuenta de un "fallo" en la segunda posibilidad que te dí. Bueno, realmente no es un fallo ya que así mismo funcionaría. Pero quedaría más corta la consulta si en lugar de usar este formato:

(IdProducto = '1' || IdProducto = '2' ||...)

Usas este otro:

IdProducto IN ('1', '2'...)

Un saludo
  #6 (permalink)  
Antiguo 28/03/2007, 14:31
 
Fecha de Ingreso: noviembre-2005
Mensajes: 15
Antigüedad: 18 años, 4 meses
Puntos: 0
Re: ¿Se puede hacer esto?

Gracias de nuevo. Ahora ando con dudas sobre cómo hacerlo de la forma más óptima que pueda... a ver si mañana estoy un poco más creativo.
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 13:46.