Ver Mensaje Individual
  #4 (permalink)  
Antiguo 23/08/2013, 07:54
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 11 meses
Puntos: 447
Respuesta: Consulta Mysql Datos Repetidos

Hola de nuevo:

Es probable que la consulta no funcione la primera vez justamente porque no tienes declaradas las variables... y es probable que la consulta no funcione cuando pones los SET, porque en realidad estas ejecutando dos operaciones de base de datos, recuerda que el (;) indica el fin de una sentencia...

Una cosa que puedes hacer es meter esto dentro de un Procedimiento almacenado, de tal manera que puedas colocar tanto los SET's como la consulta y ejecutarlo todo como una sola instrucción... además, recuerda que te comenté que hay muchas formas de hacerlo, en la página que te puse incluso puse otro ejemplo... si no te importa que se cambie el orden de los detalles, puedes utilizar la técnica del COUNT:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +-----------+------------+-------+
  3. | Idfactura | detalle    | valor |
  4. +-----------+------------+-------+
  5. | 0001      | Lapiz      |  1000 |
  6. | 0001      | Color      |  2000 |
  7. | 0001      | Cuaderno   |  5000 |
  8. | 0001      | Libro      | 10000 |
  9. | 0002      | Color      |  2000 |
  10. | 0002      | Sacapuntas |  1000 |
  11. | 0002      | Libro      | 10000 |
  12. | 0003      | Libro      | 10000 |
  13. +-----------+------------+-------+
  14. 8 rows in set (0.00 sec)
  15.  
  16. mysql> SELECT a.idfactura, a.detalle, a.valor, COUNT(*) AS row_number
  17.     -> FROM tabla a
  18.     -> JOIN tabla b
  19.     ->   ON a.idfactura = b.idfactura
  20.     ->   AND (a.detalle > b.detalle OR
  21.     ->       (a.detalle = b.detalle AND a.valor >= b.valor))
  22.     -> GROUP BY a.idfactura, a.detalle, a.valor;
  23. +-----------+------------+-------+------------+
  24. | idfactura | detalle    | valor | row_number |
  25. +-----------+------------+-------+------------+
  26. | 0001      | Color      |  2000 |          1 |
  27. | 0001      | Cuaderno   |  5000 |          2 |
  28. | 0001      | Lapiz      |  1000 |          3 |
  29. | 0001      | Libro      | 10000 |          4 |
  30. | 0002      | Color      |  2000 |          1 |
  31. | 0002      | Libro      | 10000 |          2 |
  32. | 0002      | Sacapuntas |  1000 |          3 |
  33. | 0003      | Libro      | 10000 |          1 |
  34. +-----------+------------+-------+------------+
  35. 8 rows in set (0.00 sec)

Observa que el único detalle es que para el caso del idfactura = 0001, en lugar asignar Lápiz como número 1, coloca Color... esto es porque está ordenando los detalles de manera alfabética.

Saludos
Leo.