elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  Ayuda con Inner Join e IDs repetidos - MySQL
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con Inner Join e IDs repetidos - MySQL  (Leído 4,191 veces)
[Decoded]

Desconectado Desconectado

Mensajes: 232


#Python Programmer


Ver Perfil WWW
Ayuda con Inner Join e IDs repetidos - MySQL
« en: 27 Septiembre 2017, 01:11 am »

Buenas noches ElHacker.net hace años que no ando por aqui, esta vez les vengo a fastidiar con un problema que tengo en MySQL

Tengo las tablas: producto, categorias, marcaproducto, ingreso_producto y tienen aproximadamente el siguiente contenido:

PRODUCTO:
idcodigodescripcionfotonombre_marcastock
1123456789PLC Modicon    null16
2444444444HMI Magelis    null13

CATEGORIAS:
IDCategorias
1Automatizacion

marcaproducto:
idnombre_marca
1Schneider Electric

proveedores:
idnombre_proveedor
1ChijauKay Electric

ingreso_producto:
idid_productocantidadid_proveedorprecio_comprafecha
11311002017-09-26 16:33:36
2131982017-09-26 16:34:08
3221502017-09-26 17:04:20

Estoy haciendo la siguiente consulta:

Código
  1. SELECT P.id, P.codigo, P.descripcion, MP.nombre_marca, P.foto, IP.precio_compra, P.precio_venta, P.stock, C.descripcion AS DesCategoria, Pro.nombre_proveedor, IP.fecha
  2. FROM producto AS P
  3. INNER JOIN categorias AS C ON P.id_categoria = C.id
  4. INNER JOIN marcaproducto AS MP ON P.id_marcaproducto = MP.id
  5. INNER JOIN proveedores AS Pro ON P.id_proveedor = Pro.id
  6. INNER JOIN ingreso_producto AS IP ON P.id = IP.id_producto
  7. ORDER BY fecha ASC

y tengo como respuesta lo siguiente:

id | codigo           | descripcion     | nombre_marca      | foto    | precio_compra | precio_venta | stock | DesCategoria        | nombre_proveedor | fecha
1 | 123456789   | PLC Modicon  | Schneider Electric   | NULL  |    100.00         | 0.00             | 0      | Automatizacion     | ChijauKay Electric  | 2017-09-26 16:33:36
1 | 123456789   | PLC Modicon  | Schneider Electric   | NULL  |    170.00         | 0.00             | 0      | Automatizacion     | ChijauKay Electric  | 2017-09-26 16:34:08
2 | 444444444   | HMI Magelis   | Schneider Electric   | NULL  |     98.00          | 0.00             | 0      | Automatizacion     | ChijauKay Electric  | 2017-09-26 16:54:38

Como podran ver los IDs se estan repitiendo, he probado con muchas formas que he encontrado en google pero no me funciona ninguno :( ¿En que estoy mal?
Quiero que solo muestre del que tenga la mayor fecha del ID que se repite. osea mas o menos asi:
id | codigo           | descripcion     | nombre_marca      | foto    | precio_compra | precio_venta | stock | DesCategoria        | nombre_proveedor | fecha
1 | 123456789   | PLC Modicon  | Schneider Electric   | NULL  |    170.00         | 0.00             | 0      | Automatizacion     | ChijauKay Electric  | 2017-09-26 16:34:08
2 | 444444444   | HMI Magelis   | Schneider Electric   | NULL  |     98.00          | 0.00             | 0      | Automatizacion     | ChijauKay Electric  | 2017-09-26 16:54:38



Le dare mis tremendas gracias a quien se tome la molestia de leer este post y muchas gracias  :(


En línea

Toxico


Desconectado Desconectado

Mensajes: 406



Ver Perfil
Re: Ayuda con Inner Join e IDs repetidos - MySQL
« Respuesta #1 en: 27 Septiembre 2017, 08:27 am »

Lo que estas haciendo mal es que en ningun lado colocas que quieres el maximo, no he probado el query pero mas o menos debe funcionar.

Código
  1.  
  2. SELECT t.id,
  3. t.codigo,
  4. t.descripcion,
  5. t.nombre_marca,
  6. t.foto,
  7. t.precio_compra,
  8. t.precio_venta,
  9. t.stock,
  10. t.DesCategoria,
  11. t.nombre_proveedor
  12. FROM
  13. (
  14. SELECT P.id,
  15. P.codigo,
  16. P.descripcion,
  17. MP.nombre_marca,
  18. P.foto,
  19. P.precio_venta,
  20. P.stock,
  21. C.descripcion AS DesCategoria,
  22. Pro.nombre_proveedor,
  23. PI.precio_compra,
  24. PI.fecha
  25. FROM producto AS P
  26. INNER JOIN categorias AS C ON P.id_categoria = C.id
  27. INNER JOIN marcaproducto AS MP ON P.id_marcaproducto = MP.id
  28. INNER JOIN proveedores AS Pro ON P.id_proveedor = Pro.id
  29. )  t  INNER JOIN (
  30. SELECT id_producto,
  31. precio_compra,
  32. fecha
  33. FROM ingreso_producto INNER JOIN (
  34. SELECT
  35. id_producto,
  36. MAX(IP.fecha) AS fecha
  37. FROM ingreso_producto
  38.                                                                        GROUP BY id_producto
  39. ) set_max_fecha
  40. ON ingreso_producto.id_producto = set_max_fecha.id_producto
  41.                AND ingreso_producto.fecha = set_max_fecha.fecha
  42. ) PI
  43. ON P.id = PI.id_producto
  44. ORDER BY fecha ASC
  45.  
  46.  



En línea

solo el principio....

[Decoded]

Desconectado Desconectado

Mensajes: 232


#Python Programmer


Ver Perfil WWW
Re: Ayuda con Inner Join e IDs repetidos - MySQL
« Respuesta #2 en: 27 Septiembre 2017, 08:38 am »

Gracias por la respuesta Toxico! Aqui ya son las 01:36 y por ahora sin acceso a mi PC, maniana lo probare a detalle, pero metiendo esa consulta a la base de datos por mi celular, tengo el siguiente resultado:

MySQL ha dicho: Documentación

#1054 - La columna 'PI.precio_compra' en field list es desconocida

Gracias por darte el tiempo de ayudarme  :D

 
En línea

Toxico


Desconectado Desconectado

Mensajes: 406



Ver Perfil
Re: Ayuda con Inner Join e IDs repetidos - MySQL
« Respuesta #3 en: 27 Septiembre 2017, 19:52 pm »

Razon llevas, prueba con esto.

Código
  1. SELECT t.id,
  2. t.codigo,
  3. t.descripcion,
  4. t.nombre_marca,
  5. t.foto,
  6. t.precio_compra,
  7. t.precio_venta,
  8. t.stock,
  9. t.DesCategoria,
  10. t.nombre_proveedor,
  11. PI.precio_compra,
  12. PI.fecha
  13. FROM
  14. (
  15. SELECT P.id,
  16. P.codigo,
  17. P.descripcion,
  18. MP.nombre_marca,
  19. P.foto,
  20. P.precio_venta,
  21. P.stock,
  22. C.descripcion AS DesCategoria,
  23. Pro.nombre_proveedor
  24. FROM producto AS P
  25. INNER JOIN categorias AS C ON P.id_categoria = C.id
  26. INNER JOIN marcaproducto AS MP ON P.id_marcaproducto = MP.id
  27. INNER JOIN proveedores AS Pro ON P.id_proveedor = Pro.id
  28. )  t  INNER JOIN (
  29. SELECT id_producto,
  30. precio_compra,
  31. fecha
  32. FROM ingreso_producto INNER JOIN (
  33. SELECT
  34. id_producto,
  35. MAX(IP.fecha) AS fecha
  36. FROM ingreso_producto
  37.                                                GROUP BY id_producto
  38. ) set_max_fecha
  39. ON ingreso_producto.id_producto = set_max_fecha.id_producto
  40.                AND ingreso_producto.fecha = set_max_fecha.fecha
  41. ) PI
  42. ON P.id = PI.id_producto
  43. ORDER BY fecha ASC
  44.  

En línea

solo el principio....

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿Por qué no funciona INNER JOIN en mi Base datos Mysql?
PHP
jrhomer 1 2,860 Último mensaje 12 Diciembre 2006, 20:06 pm
por Hans el Topo
Consulta en mysql (join)
Bases de Datos
Aeros 3 6,939 Último mensaje 14 Julio 2010, 14:27 pm
por Novlucker
consulta en mysql datos repetidos
Bases de Datos
zoomger 0 2,269 Último mensaje 12 Abril 2012, 17:24 pm
por zoomger
como puedo relacionar 3 tablas en mysql con inner join
Bases de Datos
kary2013 2 45,478 Último mensaje 26 Febrero 2013, 18:29 pm
por 1mpuls0
MySQL Join con 2 tablas
Java
jairoo15 0 2,339 Último mensaje 11 Mayo 2017, 19:41 pm
por jairoo15
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines