从品牌表A中查出品牌名称Name,从产品表B中查出产品的品牌名称等于A.Name的数据的行数B.C,然后按照B.C对A表数据降序排列。
我想到的代码如下,但是这样不行,在第一个括号内"a.brandName”处报错了
select a.brandName,b.c from T_brand a,(select count(*) c from t_product where productname=a.brandname) b order by b.c desc
go
IF NOT OBJECT_ID('[t_Brand]') IS NULL
DROP TABLE [t_Brand]
GO
CREATE TABLE [t_Brand]
([ID] int identity(1,1) primary key not null,
[brandName] Nvarchar(20) null
)
go
IF NOT OBJECT_ID('[t_Product]') IS NULL
DROP TABLE [t_Product]
GO
CREATE TABLE [t_Product]
([ID] int identity(1,1) primary key not null,
[ProductName] Nvarchar(20) null
)
go
INSERT [t_Brand]
SELECT '喜来登珠宝 ' union all
SELECT '香菲草 ' union all
SELECT '夏普' union all
SELECT '仙蒂罗娜' union all
SELECT '小鸡卡迪' union all
SELECT '小龙哈彼'
go
insert into [t_Product]
SELECT '喜来登珠宝 ' union all
SELECT '香菲草 ' union all
SELECT '夏普' union all
SELECT '仙蒂罗娜' union all
SELECT '小鸡卡迪' union all
SELECT '小龙哈彼' union all
SELECT '香菲草 ' union all
SELECT '夏普' union all
SELECT '仙蒂罗娜' union all
SELECT '小鸡卡迪' union all
SELECT '小龙哈彼' union all
SELECT '小龙哈彼' union all
SELECT '香菲草 ' union all
SELECT '仙蒂罗娜' union all
SELECT '小鸡卡迪' union all
SELECT '小龙哈彼' union all
SELECT '香菲草 ' union all
SELECT '夏普' union all
SELECT '夏普'
go
select a.brandName as 品牌数,
(select count(1) from t_product t where t. productname=a.brandname) 产品数
from T_brand a
order by 产品数 desc
go
/*
品牌数 产品数
香菲草 4
夏普 4
小龙哈彼 4
仙蒂罗娜 3
小鸡卡迪 3
喜来登珠宝 1
*/
select * from (select brandName,
(select COUNT(*) from t_product where productname=T_brand.brandname) c from T_brand ) as a order by c desc
试试这个