【发布时间】:2015-01-30 07:11:17
【问题描述】:
这是我的桌子:
我想获取那些包含 ServiceDescription "Plaster" 或 Skills "Plaster" 或 属于“石膏”类别,还想计算这些供应商的平均评分。
注意:如果没有任何供应商的审查,那么记录也应该来。
这是我的查询:
select * from UserDetails u
,VendorInCategory v
,CategoryMaster c
,Review rv
where v.CategoryId=c.Id
and u.Id=r.UserId
and u.Id=rv.VendorId
and v.VendorId=u.Id
and ((u.ServiceDescription like '%Plaster%' )
or (u.Skills like '%Plaster%')
or (c.Name like '%Plaster%'))
上述查询中的问题是我没有得到没有审查的供应商。
但我也想要那个不包含评论但符合我的标准的供应商。
用户详情:
id Servicedescription Skills
1 Plaster plaster
2 construction construvtion
3 plaster plaster
4 null null(not vendor)
5 null null(not vendor)
评论
id CustomerId Vendorid rating
1 4 1 3
2 5 1 3
预期输出:
VendorId ServiceDescription Skills averagerating
1 plaster plaster 3
3 plaster plaster 0
注意:最终输出应按平均评分的降序排列
【问题讨论】:
-
Bad habits to kick : using old-style JOINs - 旧式 逗号分隔的表格列表 样式已替换为 ANSI 中的 proper ANSI
JOIN语法-92 SQL 标准(20 多年前),不鼓励使用它 -
您介意给我们样本数据和预期结果吗?
-
我已经发布了示例输入和预期输出,请查看。
-
可以请任何人向我询问我对此感到非常震惊
标签: sql sql-server sql-server-2008 select average