Problema consulta mysql

tOWERR

Buenas, quiero hacer una consulta en mysql de sacar el max de una cuenta de pedidos. Yo he estado trabajando con Oracle en el cual funciona a la perfección, pero en mysql hace mucho que no lo usaba y lo pongo igual que en oracle y me da error de mal uso funcion de grupo, por ejemplo quiero hallar esto:

select nombre, max(count(ventas.idventa))
from ventas, clientes
where ventas.login = clientes.login
group by nombre;

Y me da ese error que os digo, ¿alguna solución para hallar el máximo?
Un saludo.

ekelon

no te haria falta un inner join? suponiendo que idventa este en clientes tambien como clave ajena yo lo haria asi:

select nombre, max(count(ventas.idventa))
from ventas
inner join clientes using (idventa)
where ventas.login = clientes.login
group by nombre;

eso o te falla el parametro del where porque no entiendo muy bien eso de ventas.login = clientes.login a ver si alguien nos saca de dudas jeje

1 respuesta
tOWERR

#2
Es que hace mucho que no utilizo mysql, este año estamos utilizando Oracle, y ahora estamos con PHP, y estamos con MySQL y entonces estoy algo perdido. Quiero sacar el clientes que mas compras ha realizado y el numero de compras. Y el campo principal de clientes es el Login que se relaciona con ventas a través del Login.

tOWERR

¿Ha alguien se le ocurre como puedo hacerlo?

ekelon

Te pongo un ejemplo que tengo hecho yo, puede que no te sirva de nada o que de ahi lo saques

Calcular el empleado con mas pedidos:

select IdEmpleado, nombre, count(IdPedido) as Pedidos
from Empleados
inner join Pedidos using (IdEmpleado)
group by nombre
order by Pedidos desc
limit 1

y eso me devuelve:

IdEmpleado: 4
Nombre: Margaret
Pedidos: 126

tOWERR

#6

Al final se me ocurrio hacerlo asi antes de mirar lo tuyo. Muchas gracias, pero te pregunto otra dudilla. ¿Como puedo sacar los productos que no han sido nunca comprados?
Es decir sacar los productos que no aparecen en la tabla ventas, porque en la tabla ventas aparecen las compras que se van haciendo y en cada venta aparece el idproducto del producto que se ha comprado. ¿Como puedo hacer que muestre los productos que no aparecen en esa tabla, la tabla ventas?
Un saludo, y mil gracias.

ekelon

Pues no se exactamente la sintaxis pero tienes que hacerlo con una subconsulta, en esa subconsulta seleccionas los productos que SI aparecen en ventas, y luego la pones negandola en una condicion

puede que algo asi

select distinct idproducto,  nombreproducto
from productos
where idproducto not in (select idproducto from ventas)
1 respuesta
tOWERR

#7
Muchisimas gracias tio. Estoy acostumbrado a Oracle y en MySQL no se hace igual lo cual nose como hacerlo, muchas gracias de nuevo.

Un saludo.

ekelon

De nada, me pillaste estudiando MySQL precisamente y esto tambien me ha servido a mi xDD

tOWERR

Mira, por lo menos nos ha servido a los 2. Jejejejeje.

Usuarios habituales

  • tOWERR
  • ekelon