SQL查询连接两个表的数据与SUM和订单条款
问题描述:
我在我的数据库中有两个表。 tbl_Transaction_Detail
和tbl_Categrory_Type
。 tbl_Transaction_Detail
使用Category_Type_ID
的tbl_Category_Type
作为外键。这里是我的表:SQL查询连接两个表的数据与SUM和订单条款
我要总结的tbl_Transaction_Detail
的Quantity
为Category_Type_ID
(比方说31)。
这里是我此查询(在SQL Server 2008)
SELECT CAT.Category_type_Name,
CAT.Description,
CAT.Image_url,
CAT.Price,
CAT.Weight,
Sum(TD.Quantity)'Quantity' from tbl_Transaction_Detail as TD
inner join tbl_Category_type as CAT
on TD .Category_Type_ID= CAT.Category_type_ID
WHERE TD.Category_Type_ID = 31
ORDER BY CAT.Category_type_Name,
CAT.Description,
CAT.Image_url,
CAT.Price,
CAT.Weight
但它显示了错误的所有列选择一个接一个。
答
你必须子句中使用组,包括通过一项条款,使你想除了你正在使用聚合函数的列中选择组每列。请使用表别名来提高可读性。
SELECT CAT.Category_type_Name
,CAT.Description
,CAT.Image_url
,CAT.Price
,CAT.Weight
,Sum(TD.Quantity) as Quantity
FROM tbl_Transaction_Detail TD
INNER JOIN tbl_Category_type CAT
on TD.Category_Type_ID=CAT.Category_type_ID
WHERE TD.Category_Type_ID=31
GROUP BY CAT.Category_type_Name
,CAT.Description
,CAT.Image_url
,CAT.Price
,CAT.Weight
ORDER BY CAT.Category_type_Name
,CAT.Description
,CAT.Image_url
,CAT.Price
,CAT.Weight
答
只是缺少一个由SQL服务器....并使用表别名的可读性和间距!
select CT.Category_type_Name
,CT.Description
,CT.Image_url
,CT.Price
,CT.Weight
,Sum(TD.Quantity) as Quantity
FROM tbl_Transaction_Detail TD
INNER JOIN tbl_Category_type CT
on TD.Category_Type_ID=CT.Category_type_ID
WHERE TD.Category_Type_ID=31
GROUP BY CT.Category_type_Name
,CT.Description
,CT.Image_url
,CT.Price
,CT.Weight
ORDER BY CT.Category_type_Name
,CT.Description
,CT.Image_url
,CT.Price
,CT.Weight
您需要在SQL服务器中进行分组。 mySQl不需要它,因为它被扩展了group。添加'GROUP BY tbl_Category_type.Category_type_Name,tbl_Category_type.Description,tbl_Category_type.Image_url ,tbl_Category_type.Price,tbl_Category_type.Weight'并为了便于阅读,请使用表别名。 – xQbert