MySQL - problema con consultas de fechas

   
Vista:

problema con consultas de fechas

Publicado por Silguerd (1 intervención) el 13/04/2016 22:30:37
Buenas noches,
les comento mas o menos por encima.
tengo una tabla
1
2
3
4
5
6
7
8
9
nombre   precio       fecha(la fecha es un datetime)
silla        2          2016-04-13 21:28:53
silla        3          2016-04-13 21:28:58
silla        1          2016-04-12 21:28:53
silla        7          2016-04-12 21:28:58
mesa         8          2016-04-13 21:28:54
mesa         5          2016-04-13 21:28:55
mesa         6          2016-04-13 21:28:54
mesa         2          2016-04-13 21:28:56
he omitido algunas columnas que ahora no tienen nada que ver"el id y otro tipo de precio", mi duda surge cuando hago una consulta con dos condiciones
tengo que sacar el nombre el precio MAS pequeño de cada día y de cada uno(mesa y silla)
que devuelva esto

1
2
3
silla        2          13
silla        1          12
mesa        2          13

he probado en poner
1
2
3
SELECT nombre,MIN(precio),day(fecha)
from precios
group by nombre,day(fecha)

y lo único que consigo es hacer que no se repita el mismo día con el mismo nombre pero la condición del precio mas pequeño no se cumple.

se que tengo que hacer un grupo o hacer una subconsulta pero no logro verlo, hace mucho tiempo que no tocaba nada de bd y si lo hacia eran consultas simples y lo demás se encargaba el codigo
gracias de antemano n.n
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

problema con consultas de fechas

Publicado por DAVID (63 intervenciones) el 14/04/2016 18:11:51
Hola buenas,
Si es una condición de grupo la tienes que poner en la clausula having.


Un saludo,
David
estudio de diseño grafico
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problema con consultas de fechas

Publicado por Gonzalo (103 intervenciones) el 15/04/2016 13:55:17
La verdad, tu problema ni se entiende, ni se detecta en una prueba básica...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
mysql> DROP  TABLE IF EXISTS precios;
Query OK, 0 rows affected (0.06 sec)
 
mysql> CREATE TABLE IF NOT EXISTS precios (
    ->     id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
    ->     nombre VARCHAR(50) NOT NULL,
    ->     precio DECIMAL(14 , 3 ),
    ->     fecha DATETIME NOT NULL
    -> );
Query OK, 0 rows affected (0.03 sec)
 
mysql> INSERT INTO precios(nombre, precio, fecha)
    -> VALUES
    -> ('silla', 2, '2016-04-13 21:28:53'),
    -> ('silla', 3, '2016-04-13 21:28:58'),
    -> ('silla', 1, '2016-04-12 21:28:53'),
    -> ('silla', 7, '2016-04-12 21:28:58'),
    -> ('mesa', 8, '2016-04-13 21:28:54'),
    -> ('mesa', 5, '2016-04-13 21:28:55'),
    -> ('mesa', 6, '2016-04-13 21:28:54'),
    -> ('mesa', 2, '2016-04-13 21:28:56');
Query OK, 8 rows affected (0.02 sec)
Records: 8  Duplicates: 0  Warnings: 0
 
mysql>
mysql> SELECT
    ->     nombre, MIN(precio) PrecioMin, DATE(fecha) fecha
    -> FROM
    ->     precios
    -> GROUP BY nombre desc, DATE(fecha);
+--------+-----------+------------+
| nombre | PrecioMin | femcha     |
+--------+-----------+------------+
| silla  |     1.000 | 2016-04-12 |
| silla  |     2.000 | 2016-04-13 |
| mesa   |     2.000 | 2016-04-13 |
+--------+-----------+------------+
3 rows in set (0.00 sec)

Y ordenando de la forma que quieres:
1
2
3
4
5
6
7
8
9
10
11
12
13
mysql> SELECT
    ->     nombre, MIN(precio) PrecioMin, DATE(fecha) femcha
    -> FROM
    ->     precios
    -> GROUP BY nombre DESC , DATE(fecha) DESC;
+--------+-----------+------------+
| nombre | PrecioMin | femcha     |
+--------+-----------+------------+
| silla  |     2.000 | 2016-04-13 |
| silla  |     1.000 | 2016-04-12 |
| mesa   |     2.000 | 2016-04-13 |
+--------+-----------+------------+
3 rows in set (0.00 sec)

Por supuesto, más allá de que no estás usando la función correcta, ya que por fecha es DATE(), no DAY(). La que usas te agrupará los datos del mismo número de día, en todos los meses.. cosa medio absurda para un reporte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar