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

Ordenación de registros con relaciones

Estas en el tema de Ordenación de registros con relaciones en el foro de Mysql en Foros del Web. Hola, Alguien puede ayudarme con la siguiente consulta? Tengo dos tablas: Código: producto: id nombre precio producto_stock: id id_producto stock Ya sé que no tiene ...
  #1 (permalink)  
Antiguo 28/10/2014, 06:51
 
Fecha de Ingreso: octubre-2014
Mensajes: 1
Antigüedad: 9 años, 6 meses
Puntos: 0
Ordenación de registros con relaciones

Hola,

Alguien puede ayudarme con la siguiente consulta?
Tengo dos tablas:
Código:
producto:
id
nombre
precio

producto_stock:
id
id_producto
stock
Ya sé que no tiene mucho sentido tener estas dos tablas, pero me he encontrado el proyecto así y tengo que respetarlo.
Necesito una consulta que me muestre todos los registros ordenador por el precio, pero que deje los productos sin stock al final, es decir que los muestre, pero los deje los últimos, los que tienen stock tiene que mostrarlos primero y ordenados por el precio.

Muchas gracias.
  #2 (permalink)  
Antiguo 28/10/2014, 07:14
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, 5 meses
Puntos: 2658
Respuesta: Ordenación de registros con relaciones

Cita:
Ya sé que no tiene mucho sentido tener estas dos tablas
Totalmente equivocado: Eso es normalización de BBDD, y si, el stock debe ir en una tabla diferente de la descripcion del producto. Lo que si no tiene sentido es que pongas un ID propio a la tabla stock si el producto se maneja con un stock único por cada producto.
Cita:
Necesito una consulta que me muestre todos los registros ordenador por el precio, pero que deje los productos sin stock al final, es decir que los muestre, pero los deje los últimos, los que tienen stock tiene que mostrarlos primero y ordenados por el precio.
Eso se hace con un UNION ALL, donde el primer SELECT busca los que tienen stock y el segundo los que no lo tienen.

Código SQL:
Ver original
  1. SELECT *
  2. FROM
  3.     (SELECT id_producto, nombre, stock
  4.     FROM producto P INNER JOIN stock S ON P.id = S..id_producto
  5.     WHERE stock > 0
  6.     ORDER BY S.precio ASC, S.sotck DESC) T1
  7. UNION ALL
  8. SELECT *
  9. FROM
  10.     (SELECT id_producto, nombre, IFNULL(stock, 0) stock
  11.     FROM producto P LEFT JOIN stock S ON P.id = S..id_producto
  12.     WHERE stock = 0 OR stock IS NULL
  13.     ORDER BY S.precio ASC) T2
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: ordenacion
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 23:08.