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

Ordenar registros por sus precios que están en otra tabla

Estas en el tema de Ordenar registros por sus precios que están en otra tabla en el foro de Mysql en Foros del Web. Hola a todos, Tengo una tabla de productos con todos los datos del artículo (nombre, descripción, etc.) y por otra parte tengo en otra tabla ...
  #1 (permalink)  
Antiguo 14/03/2009, 07:26
 
Fecha de Ingreso: enero-2008
Ubicación: Madrid
Mensajes: 72
Antigüedad: 16 años, 2 meses
Puntos: 1
Ordenar registros por sus precios que están en otra tabla

Hola a todos,

Tengo una tabla de productos con todos los datos del artículo (nombre, descripción, etc.) y por otra parte tengo en otra tabla los precios de los productos para que cada artículo pueda tener más de un producto.

He conseguido que en la página Web que estoy creando aparezcan el listado de artículos con su nombre, foto, descripción y con el precio mínimo de ese artículo.

El caso es que necesito ordenar estos artículos por el precio, por el precio mínimo de cada uno y teniendo en cuenta que esos precio están en otra tabla.

Gracias por la ayuda.
  #2 (permalink)  
Antiguo 14/03/2009, 20:27
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 17 años, 7 meses
Puntos: 9
Respuesta: Ordenar registros por sus precios que están en otra tabla

Hola Nachoseo si entendi bien tu duda lo que tienes que hacer es un JOIN entre ambas tablas y utilizar la clausula ORDER BY para ordenar los registros. Si posteas las estructuras de las tablas quizas podamos brindarte una mejor ayuda.

Saludos
__________________
->Aprender es un proceso que incluye el error..
  #3 (permalink)  
Antiguo 15/03/2009, 10:43
 
Fecha de Ingreso: enero-2008
Ubicación: Madrid
Mensajes: 72
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Ordenar registros por sus precios que están en otra tabla

Hola Cala,

Gracias por tu respuesta. Indico a continuación la estructura de las tablas:

La tabla de productos se llama tienda_productos y sus campos son los siguientes:

id
categoria
nombre
entradilla
descripcion
pclaves_buscador
destacado
visible

La tabla de precios se llama tienda_precios y sus campos son los siguientes:

id
id_articulo
nombre
descripcion
precio

Muchas gracias por la ayuda
  #4 (permalink)  
Antiguo 15/03/2009, 15:13
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Ordenar registros por sus precios que están en otra tabla

SELECT tp.id, tp.categoria, tp.nombre, tp.entradilla, tp.descripcion, tp.pclaves_buscador, tp.destacado, tp.visible, tdp.precio, tdp.nombre, tdp.descripcion FROM tienda_productos tp INNER JOIN tienda_precios tdp ON tp.id = tdp.id_articulo INNER JOIN (SELECT id_articulo, MIN(precio) preciominimo GROUP BY id_articulo)t1 ON tp.id = t1.id_articulo and tdp.precio = t1.preciominimo

No lo he probado.
  #5 (permalink)  
Antiguo 17/03/2009, 11:57
 
Fecha de Ingreso: enero-2008
Ubicación: Madrid
Mensajes: 72
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Ordenar registros por sus precios que están en otra tabla

Me muestra el siguiente error: 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 'GROUP BY id_articulo)t1 ON tp.id = t1.id_articulo and tdp.precio = t1.preciomini' at line 1

Esta es la sentencia que he escrito:

$sql="SELECT tp.id, tp.categoria, tp.nombre, tp.entradilla, tdp.precio FROM tienda_productos tp INNER JOIN tienda_precios tdp ON tp.id = tdp.id_articulo INNER JOIN (SELECT id_articulo, MIN(precio) preciominimo GROUP BY id_articulo)t1 ON tp.id = t1.id_articulo and tdp.precio = t1.preciominimo";

Lo que quiero es que me muestre sólo los artículos de una categoría que me viene por la url y que recojo en una varible llamada $id. ¿en que parte de la sentencia habría que añadir where td.categoria='$id'?

Muchas gracias por la ayuda
  #6 (permalink)  
Antiguo 17/03/2009, 12:04
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 2 meses
Puntos: 45
Respuesta: Ordenar registros por sus precios que están en otra tabla

Falta una coma, prueba lo siguiente
Código SQL:
Ver original
  1. SELECT tp.id, tp.categoria, tp.nombre, tp.entradilla, tp.descripcion, tp.pclaves_buscador,
  2.            tp.destacado, tp.visible, tdp.precio, tdp.nombre, tdp.descripcion
  3. FROM tienda_productos tp
  4.    INNER JOIN tienda_precios tdp ON tp.id = tdp.id_articulo
  5.    INNER JOIN (SELECT id_articulo, MIN(precio). preciominimo GROUP BY id_articulo) t1 ON tp.id = t1.id_articulo AND tdp.precio = t1.preciominimo
__________________
"El conocimiento nos hace responsables."
twitter: @benjamingb
blog personal: http://codigolinea.com
ZF Manual en español http://manual.zfdes.com
  #7 (permalink)  
Antiguo 18/03/2009, 09:31
 
Fecha de Ingreso: enero-2008
Ubicación: Madrid
Mensajes: 72
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Ordenar registros por sus precios que están en otra tabla

No se que pasa pero me sigue dando error.... que desesperación

Gracias por la ayuda
  #8 (permalink)  
Antiguo 18/03/2009, 11:29
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Ordenar registros por sus precios que están en otra tabla

Código sql:
Ver original
  1. SELECT tp.id, tp.categoria, tp.nombre, tp.entradilla, tp.descripcion, tp.pclaves_buscador,
  2.     tp.destacado, tp.visible, tdp.precio, tdp.nombre, tdp.descripcion
  3. FROM tienda_productos tp
  4.     INNER JOIN tienda_precios tdp ON tp.id = tdp.id_articulo
  5.     INNER JOIN
  6.          (SELECT id_articulo, MIN(precio). preciominimo
  7.          GROUP BY id_articulo) t1
  8.         ON tp.id = t1.id_articulo AND tdp.precio = t1.preciominimo

Esta subconsulta no tiene tabla de origen:
Código sql:
Ver original
  1. (SELECT id_articulo, MIN(precio). preciominimo
  2.          GROUP BY id_articulo) t1
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
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 17:41.