如果有人可以帮助我进行下面的查询,那就太好了!这个查询很有挑战性,我尝试自己做,但无法显示正确的结果......
我使用类似于“Facebook”的系统的数据库。
查询应显示去年为每个帖子发表评论的用户的电子邮件和姓名,这些帖子由他们的每个朋友发布。
意思是,我只想显示对所有朋友的所有帖子发表评论的人。
这是我的试验,但我收到了部分结果。我无法理解我做错了什么。
select distinct U.Mail, U.FirstName + ' ' + U.LastName as FullName
from Users U
inner join FriendsList FL on U.Mail = FL.Mail1
inner join Post P on FL.Mail2 = P.UserMail
left outer join Comment C on P.ID = C.IDPost and P.UserMail <> C.Mail
where datediff(year, P.DatePosted, getdate()) <= 1
group by U.Mail, U.FirstName, U.LastName
having count(distinct P.ID) = count(distinct C.IDPost)
Run Code Online (Sandbox Code Playgroud)
BAK文件链接(包括测试数据):https : //file.io/SagvM3cx
例子:
让我们假设 I & Adam & Ben 是朋友。
?? 第一种情况: …
如果有人能帮我解决这个问题,我将不胜感激。使用case when count()=0
&时我似乎无法得到正确的结果where
我使用 SQL Server,使用类似于“Facebook”的系统数据库。
我正在尝试编写一个查询,显示电子邮件地址、标记状态和过去一个月发布的帖子数量。标记状态应如下: 如果标记 1-2 个帖子-显示“很少” 如果标记 3-5 个帖子-显示“中等” 如果标记 5+ 个帖子-显示“许多” 如果根本不标记-显示“无” .
下面是我写的查询。我写的查询的问题是,由于 WHERE 中的条件,我永远不会收到“none”。
如何更改查询以显示正确的结果?
select U.Mail, count(P.ID) as PostCount,
case
when count(P.ID) = 0 then 'none'
when count(P.ID) <= 2 then 'few'
when count(P.ID) <= 5 then 'medium'
else 'many'
end PostCountCategory
from Users U
left join Tagging T on U.Mail = T.Mail
left join Post P on T.IDPost = P.ID
where datediff(day,P.DatePosted,getdate()) <= 30 --Because of this condition …
Run Code Online (Sandbox Code Playgroud)