我是SQL编码的新手,我正在努力解决我在数据库类中遇到的问题。
我不想回答!我只需要被推向正确的方向。 以下是我挣扎的问题。
编写一个SELECT语句,为包含这些列的产品的每个类别返回一行: Categories表中的CategoryName列 Products表中的产品数量 Products表中最昂贵产品的定价 对结果集进行排序,以便首先显示包含最多产品的类别。
这是我到目前为止所做的:
SELECT C.CategoryName, P.CategoryID, COUNT(*) Products, MAX(P.ListPrice)
FROM Categories C, Products P
WHERE C.CategoryName=P.CategoryID
GROUP BY C.CategoryName,P.CategoryID ORDER BY COUNT(*) desc;
每次运行我的SELECT查询时,我都会收到此错误:
Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the varchar value 'Basses' to data type int.
非常感谢任何帮助! 谢谢!
-------------- UPDATE ----------------------- UPDATE -------- --------------
嘿大家只是想在每个人的帮助下知道我终于明白了。
这是最终结果。
SELECT C.CategoryName,COUNT(P.CategoryID) AS NumberOfProducts, MAX(P.ListPrice) AS
MostExpensiveProduct
FROM Categories C, Products P
WHERE P.CategoryID=C.CategoryID
GROUP BY C.CategoryName ORDER BY COUNT(*) desc;
答案 0 :(得分:5)
最有可能导致您尝试将C.CategoryName
(很可能是VARCHAR类型)与P.CategoryID
(可能是INT
确保在加入表格时使用了正确的相关字段。
答案 1 :(得分:0)
我认为您正在将varchar(categoryname)与int(categoryid)进行比较,在使用where condition时将varchar的类型更改为int,或者在使用where where时使用相同数据类型的列