articulo mas vendido entre dos fechas con mysql

Publicado por Joaquin Rossi
hace 10 años

<p>Hola! miren, estoy haciendo un programa en el que se registra la compra de varios articulos.</p>

<p>Estoy trabajando con mysql y tengo varias tablas entre ellas: clientes, articulos y ventas.</p>

<p>Y lo que necesito es que el usuario pueda seleccionar dos fechas y despues obtenga el detalle del producto más vendido entre esas dos fechas!</p>

<p>Las tablas articulos y ventas son mas o menos asi:</p>

<p>articulos: id, codigo, precio, stock</p>

<p>ventas: id, cliente, fecha, articulo, cantidad</p>

<p>Como podria hacer la consulta en mysql para obtener ese resultado?? Gracias !!</p>

mysql
Respuesta de Lucas
hace 10 años

<p>1.- select * from articulos where id = (select top 1 id from ( select articulo as id, sum(ventas.cantidad) as total from ventas where ventas.fecha >= fecha_menor and ventas.fecha <= fecha_mayor order by cantidad <o bien, total> des))</p>

<p>para la selección de las fechas,  por lo que veo, podés usar el between:</p>

<p>... from ventas where ventas.fecha between fecha_menor, fecha_mayor ...</p>

<p>lo que se hace es: primero hace la suma de la cantidad para ese artículo y hace una vista como: id articulo, total. Al estar ordenado descendente por la cantidad, el primero tendrá el valor más alto en cantidad. Entonces seleccionás con top, del primer registro del tope, su código de artículo. Entonces la primer sentencia select toma a ese id artículo de la instrucción anterior y seleccióna todo.</p>

<p>El código no lo probé, por lo que puede tener errores de sintaxis, pero la lógica pienso que es la correcta. Saludos!</p>

Respuesta de Ø Ale Herrera
hace 10 años

<p>yo haria algo asi</p>

<pre class="prettyprint"> SELECT TOP 1 * FROM ( SELECT id, SUM(Cantidad) as Cantidad FROM articulos WHERE fecha between $fechainicio AND $fechafin GROUP BY id) as A ORDER BY Cantidad</pre>

<p> </p>