Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 获取已进行审核的客户名称_Sql_Sql Server_Sql Server 2008_Select - Fatal编程技术网

Sql 获取已进行审核的客户名称

Sql 获取已进行审核的客户名称,sql,sql-server,sql-server-2008,select,Sql,Sql Server,Sql Server 2008,Select,请参阅我已提出的问题: 一切都很好。我也得到了我的期望输出,但我只想要给出评论的客户名称 这是我从上面的链接获取的查询: SELECT u.id,u.fullname,u.email,u.ServiceDescription, u.Skills,c.Name,rv.Reviews, ISNULL(rv.averagerating, 0) averagerating FROM UserDetails u INNER JOIN VendorInCatego

请参阅我已提出的问题:

一切都很好。我也得到了我的期望输出,但我只想要给出评论的客户名称

这是我从上面的链接获取的查询:

 SELECT u.id,u.fullname,u.email,u.ServiceDescription, u.Skills,c.Name,rv.Reviews,
           ISNULL(rv.averagerating, 0) averagerating
    FROM UserDetails u 
    INNER JOIN VendorInCategory v ON v.VendorId=u.Id 
    INNER JOIN CategoryMaster c ON v.CategoryId=c.Id 
    LEFT JOIN (SELECT rv.VendorId,rv.Reviews, AVG(rv.RatingValue) averagerating FROM Review rv GROUP BY rv.VendorId,rv.Reviews) rv ON u.Id=rv.VendorId  
    WHERE ((u.ServiceDescription LIKE '%SearchKeyword%') OR (u.Skills LIKE '%@SearchKeyword%') OR 
           (c.Name LIKE '%@SearchKeyword%'))
    ORDER BY ISNULL(rv.averagerating, 0) DESC;
现在,在该查询中,可以获取提供了评论的客户名称

用户详细信息:

id    Name       Servicedescription         Skills
1     john         Plaster                  plaster

2     abc          construction             construction

3     xyz          plaster                  plaster

4     pqr          null                     null(not vendor)

5     lmn          null                     null(not vendor)
VendorId    ServiceDescription     Skills          rating   customername    reviews

1              plaster              plaster           3           pqr            good

3              plaster              plaster           3           lmn            bad  
回顾

id     CustomerId     Vendorid    rating     reviews    

1       4                1          3         fdd

2       5                1          3         dfg
预期输出:

id    Name       Servicedescription         Skills
1     john         Plaster                  plaster

2     abc          construction             construction

3     xyz          plaster                  plaster

4     pqr          null                     null(not vendor)

5     lmn          null                     null(not vendor)
VendorId    ServiceDescription     Skills          rating   customername    reviews

1              plaster              plaster           3           pqr            good

3              plaster              plaster           3           lmn            bad  
我不想计算平均评分


有谁能帮我做到这一点吗???

你不能完全按照你想要的方式来做,因为平均值是一个平均值:如果十个不同的人审查了该供应商怎么办?它应该显示谁的名字

但是,您可以为每次审阅单独设置一行

如果这是你想要的,试试这个

编辑:更新以包括Review.reviews

SELECT vu.id AS VendorId, vu.ServiceDescription, vu.Skills,
       r.RatingValue AS rating, ru.name AS customername, r.reviews
FROM Review r
JOIN UserDetails vu ON r.Vendorid = vu.id
JOIN UserDetails ru ON r.CustomerId = ru.id

只需将用户表和审阅表之间的
左联接设置为
内部联接
,然后从用户表中选择名称列

尝试下面的查询

样本数据

create table UserDetails(
    Id int,
    Name Varchar(250),
    ServiceDescription varchar(20),
    Skills varchar(20)
)
create table Review(
    Id int,
    CustomerId int,
    VendorId int,
    Rating int,
    review Varchar(25)
)

insert into UserDetails values(1, 'John','Plaster', 'plaster'),(2,'Paul', 'construction', 'construction'),(3,'AAA', 'plaster', 'plaster'),(4,'PQR',null,null),
(5,'lmn',null,null)
insert into Review values(1, 4, 1, 3,'Good'),(2, 5, 1, 0,'Bad');
查询

   select
    VendorId=r.CustomerId,
    vu.ServiceDescription,
    vu.Skills,
    AverageRating=r.rating,
    CustomerName=ru.Name,
    reviews=r.review
FROM Review r
JOIN UserDetails vu ON r.Vendorid = vu.id
JOIN UserDetails ru ON r.CustomerId = ru.id
where
    ru.ServiceDescription is null
    or ru.Skills is null
group by 
    r.CustomerId,
    ru.Name,
    vu.ServiceDescription,
    vu.Skills,r.rating,r.review
order by AverageRating desc

根据我得到的答案,我准备好了这个查询,预期结果如下:

SELECT u.id,u.fullname,u.email,u.ServiceDescription, 
u.Skills,c.Name,r.Reviews,r.RatingValue,ru.Id,
ru.Fullname FROM UserDetails u 
INNER JOIN VendorInCategory v ON v.VendorId=u.Id 
INNER JOIN CategoryMaster c ON v.CategoryId=c.Id 
left join Review r
    on r.VendorId = u.id
left JOIN UserDetails ru ON r.CustomerId = ru.id
WHERE ((u.ServiceDescription LIKE '%Plaster%') OR (u.Skills LIKE '%Plaster%') OR 
       (c.Name LIKE '%Plaster%'))
ORDER BY ISNULL(r.RatingValue, 0) DESC;
现在您可以从下面的链接中看到我的数据库设计:

在这里你可以看到石膏是建筑的子类别(Id:40)

所以,如果在categorymaster中搜索到任何单词,我想获取parentcategory

如果在子类别中找到word,则获取其父类别名称,否则仅获取父类别名称


任何人都可以编辑我的查询以实现此功能吗?

您如何评价riview的好坏,因为在您的评论表中,第一条评分为3的记录是riviews good,但第二条评分为3的记录是bad评论已存储在我的评论表中您想计算平均评分还是不要忘记平均评分。i不想计算平均评级如果你不想计算平均评级为什么同一评级在你的预期输出中既有好的也有坏的“好”和“坏”的值从哪里来?如果值大于3,它是否应该说“好”,否则应该说“坏”?还是“好”和“坏”来自
审查的文本。审查
?您的客户名称出现错误,您不需要进行任何审查。您只需获取与该审查相关的审查和评级。请将您从中获得此想法的答案作为已接受的答案,或者作为花时间解决您的问题的礼貌,对其进行投票issue@Rajesh:对不起,我忘了投你的赞成票