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

Sentencia SQL con 2 tablas último valor agrupados

Estas en el tema de Sentencia SQL con 2 tablas último valor agrupados en el foro de Bases de Datos General en Foros del Web. Buenas noches saludos cordiales necesito un favor de parte de los expertos y es una consulta sql a continuacion les muestro las tablas involucradas y ...
  #1 (permalink)  
Antiguo 07/09/2017, 18:30
 
Fecha de Ingreso: junio-2008
Mensajes: 74
Antigüedad: 16 años, 5 meses
Puntos: 2
Sentencia SQL con 2 tablas último valor agrupados

Buenas noches saludos cordiales necesito un favor de parte de los expertos y es una consulta sql a continuacion les muestro las tablas involucradas y la tabla de resultados. Mi BD MySQL

REQUERIMIENTO
Consultar el ultimo stock de los productos insertado en la tabla inventory.

MI EJEMPLO QUE NO ME FUNCIONO
Hice esta consulta pero el stock no es el correcto, aun no hice la conexion con la tabla de productos porque estoy probando.
Código SQL:
Ver original
  1. SELECT MAX(id), idproduct, stock FROM `inventory` WHERE idzone = 1 GROUP BY idproduct


TABLA: inventory
Código:
Id | idzone | idproduct | stock
1  |     1    |     1     | 120
13 |     1    |    1      | 140 **
10 |     1    |    1      | 20
11 |     1    |    2      | 100
14 |     1    |    2      | 10   **
12 |     1    |    2      | 90
TABLA: products
Código:
Idproduct | name 
    1     |  PRODUCTO 01 
    2     |  PRODUCTO 02
Resultado Esperado
Código:
id | name          |  stock          
13 |  PRODUCTO 01  |  140
14 |  PRODUCTO 01  |  10
  #2 (permalink)  
Antiguo 07/09/2017, 23:26
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: Setencia SQL con dos tablas ultimo valor agrupados

Saludo

Bueno, pues se me ocurrieron estas

Código SQL:
Ver original
  1. -- conllevaría demasiada manualidad
  2. SELECT id, idproduct, stock FROM `inventory` WHERE id BETWEEN
  3. (SELECT MAX(id) FROM `inventory` i  WHERE idzone = 1 GROUP BY idproduct LIMIT 1) AND
  4. (SELECT MAX(id) FROM `inventory` i  WHERE idzone = 1 GROUP BY idproduct LIMIT 1,1)

Código SQL:
Ver original
  1. -- conllevaría demasiada manualidad
  2. SELECT i.id, i.idproduct, i.stock FROM `inventory` i
  3. WHERE (id = (SELECT MAX(id) FROM inventory WHERE idzone = 1 AND  idproduct = 1) OR id = (SELECT MAX(id) FROM inventory WHERE idzone = 1  AND idproduct = 2))


Código SQL:
Ver original
  1. -- la mejor
  2. SELECT i.id, i.idproduct, i.stock FROM `inventory` i
  3. WHERE id IN ( SELECT MAX(id) FROM `inventory` WHERE idzone = 1 GROUP BY idproduct)

Me queda la duda de como hacer esto con EXISTS,
tal vez si apareciera
gnzsoloyo por estos lares
pueda brindarnos una mano, solo por curiosidad,
pues yo lo intenté pero no me salió la curva.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 08/09/2017, 07:41
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Setencia SQL con dos tablas ultimo valor agrupados

otra forma de hacerlo

Código SQL:
Ver original
  1. SELECT * FROM products AS t1
  2. LEFT JOIN (SELECT MAX(id) AS id,stock, id_product FROM inventory WHERE id_zone=1) AS t2 ON (t1.id_product=t2.id_product)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #4 (permalink)  
Antiguo 09/09/2017, 00:23
 
Fecha de Ingreso: diciembre-2008
Ubicación: PERU
Mensajes: 294
Antigüedad: 15 años, 11 meses
Puntos: 23
Respuesta: Setencia SQL con dos tablas ultimo valor agrupados

Código SQL:
Ver original
  1. SELECT prod.idproduct, prod.name, inv.stock FROM inventory inv
  2.              INNER JOIN products prod ON prod.idproduct = inv.idproduct
  3.              WHERE inv.idzone = 1
  4.              GROUP BY inv.idproduct HAVING MAX(inv.id) ORDER BY 1 DESC LIMIT 2;

Última edición por yuo2; 09/09/2017 a las 00:28

Etiquetas: agrupados, mysql, select, sql, tabla, tablas, ultimo, valor
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 12:46.