SQL - sacar el valor maximo de un campo

 
Vista:
sin imagen de perfil

sacar el valor maximo de un campo

Publicado por toni (3 intervenciones) el 28/03/2017 19:53:01
hola a todos necesito sacar unicamente el nombre del cliente que mas a gastado y el gasto.....

la BD en cuestion es esta decir que estoy usando como motor MYSQL bajo linux

+----------------------+
| Tables_in_cptaller1 |
+----------------------+
| clientes |
| crea |
| detalle_fact_cliente |
| facturas_clientes |
| hoja_parte |
| mecanico |
| repuesto |
| usan |
| vehiculo |
+----------------------+

cliente
id_cliente | nom_cliente | apells_cliente | dni_cliente | telf_cliente |

siendo id_cliente la PK

vehiculo
+-------------+-----------------+------------+---------+-----------+---------+
| id_vehiculo | id_cliente_vehi | marca | modelo | matricula | color |
+-------------+-----------------+------------+---------+-----------+---------+
siendo id_vehiculo PK y id_cliente_vehi la FK

detalle_fact_cliente
+-------------+-----------------+------------+---------+-----------+---------+
| id_vehiculo | id_cliente_vehi | marca | modelo | matricula | color |
+-------------+-----------------+------------+---------+-----------+---------+
sendo id_vehiculo la PK y id_cliente_vehi la FK

la consulta que estoy haciendo es esta (INCLUSO HE PROVADO CON LA CLÁUSULA HAVING PARA FILTRAR EL RESULTADO Y NO ME FUNCIONA:)

mysql> select max(d.precio), c.nom_cliente from clientes c, vehiculo v, detalle_fact_cliente d
-> where c.id_cliente = v.id_cliente_vehi and v.id_vehiculo = d.id_vehiculo_fact
-> group by c.nom_cliente
-> ;
+---------------+-------------+
| max(d.precio) | nom_cliente |
+---------------+-------------+
| 200 | adrian |
| 220.35 | antonio |
| 300.25 | cesar |
| 55.35 | javier |
| 50.3 | jose |
+---------------+-------------+
5 rows in set (0,00 sec)

como veis me salen desordenada e incluso no me filtra el cliente que mas ha gastado ...


saludos y gracias por las respuestas
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
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

sacar el valor maximo de un campo

Publicado por Isaias (1919 intervenciones) el 28/03/2017 20:07:32
¿Y si haces un ORDER BY por la columna max(d.precio)?

¿En MYSQL no existen los JOIN's?
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
sin imagen de perfil

sacar el valor maximo de un campo

Publicado por toni (3 intervenciones) el 28/03/2017 20:15:46
hola es que si pongo un order by no me vale de nada pues solo quiero sacar un unico campo

que me daria como respuesta el gasto maximo y nombre de la persona ejemplo de respuesta :

| max(d.precio) | nom_cliente |
| 300.25 | cesar |
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
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

sacar el valor maximo de un campo

Publicado por Isaias (1919 intervenciones) el 28/03/2017 20:50:41
Eso es pura logica

Primero, ORDENAS (ORDER BY) de mayor a menor por la columna donde traes el importe y le indicas que SOLO QUIERES UN REGISTRO

1
SELECT .....BLA..BLA...BLA.... LIMIT (1)

¿No existen los JOIN's en MySQL?, te pregunto esto porque esta UNIENDO tus tablas con codificacion antigua


1
FROM mytabla1 t1 JOIN mytabla2 t2 ON t1.ID = t2ID

Saludos
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
sin imagen de perfil

sacar el valor maximo de un campo

Publicado por toni (3 intervenciones) el 28/03/2017 21:14:54
muchas gracias compañero no conocia la clausula LIMIT

si se que existe el join pero y es mas comodo pero ya me he acostumbrado a hacerlo asi se que es una mala constumbre el unico join que no funciona en mysql es el full join

te digo como me quedo

1
2
3
4
select d.precio,c.nom_cliente  from clientes c, vehiculo v, detalle_fact_cliente d
where c.id_cliente = v.id_cliente_vehi and v.id_vehiculo = d.id_vehiculo_fact
order by d.precio desc
limit 1

'300.25', 'cesar'

...saludos y gracias por la ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

sacar el valor maximo de un campo

Publicado por Isaias (1919 intervenciones) el 28/03/2017 23:48:48
Pues que bueno que sirvio
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