Seleccione la parte superior y ordene de dos tablas
Frecuentes
Visto 3,254 equipos
2
Estoy haciendo un mercado de comercio electrónico. Hay muchos vendedores que venden en este mercado. Para cada vendedor, me gustaría mostrar una lista de los más vendidos.
La base de datos está en SQL Server. Hay 2 tablas principales en este caso:
Tabla 1: Almacena los productos pedidos de cada pedido. Los campos incluyen ID de vendedor, ID de pedido, ID de producto y Cantidad.
Tabla 2: La tabla maestra de productos. Los campos incluyen ProductID, ...
¿Cómo puedo hacer una consulta para obtener los 10 mejores productos con más pedidos? Mi SQL a continuación no parece funcionar ...
SELECT TOP (10) SUM(d.Quantity) AS total, d.ProductID, p.Title
From OrderDetails d, Products p
WHERE d.SellerID = 'xxx' AND
d.ProductID = p.ProductID
GROUP by d.ProductID
ORDER BY total DESC
Cualquier ayuda es muy apreciada. ¡Gracias!
3 Respuestas
1
select *, d.s
from products p
inner join
(
select top 10 productid, sum(quantity) as s
From OrderDetails
group by productid
order by sum(quantity) desc
)
d on d.productid = p.productid
Respondido 04 Jul 12, 09:07
0
Esto es sólo una suposición. Si desea "la mayoría de los pedidos", prefiero contar los pedidos en lugar de sumar la cantidad.
SELECT TOP 10
COUNT(d.OrderID) AS total, d.ProductID, p.Title
FROM OrderDetails d
INNER JOIN Products p ON d.ProductID = p.ProductID
WHERE d.SellerID = 'xxx'
GROUP by d.ProductID, p.Title
ORDER BY COUNT(d.OrderID) DESC
Qué más arreglé:
A GROUP BY le faltaba una columna. Debe nombrar cada columna que tiene en su cláusula SELECT pero no está en una función agregada.
En la cláusula ORDER BY, debe nombrarlo exactamente como lo hizo en la cláusula SELECT. Los alias no funcionan bien en SQL Server.
Usó la sintaxis INNER JOIN, que es menos propensa a errores y olvida especificar la unión en la cláusula WHERE.
Respondido 04 Jul 12, 09:07
Esto funciona para mí, aunque necesito hacer algunos ajustes. Se cambió para usar SUMA y agregar algunos otros campos. ¡Gracias! - JK
-1
Esto no se debe al tipo de base de datos que usa, sino a la función agregada. Hay muchas preguntas y respuestas sobre este problema en stackoverflow. Por favor, búscalo.
Respondido 04 Jul 12, 09:07
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas sql sql-server or haz tu propia pregunta.
¿Obtiene un error o resultados incorrectos? - Yehuda Shapira
el que menos nuestra marca, por favor, simplemente haz eso, ya que todos están tratando de ayudar con el cartel. - SƲmmēr Aƥ