【发布时间】:2019-03-04 19:49:00
【问题描述】:
我正在尝试使用 Stack Exchange 数据资源管理器 (SEDE) 查找一种情况,其中 Stack Overflow 上的两个不同用户已经接受了彼此的回答。比如:
Post A { Id: 1, OwnerUserId: "user1", AcceptedAnswerId: "user2" }
和
Post B { Id: 2, OwnerUserId: "user2", AcceptedAnswerId: "user1" }
我目前有一个查询,可以找到两个用户在多个问题上合作作为提问者 - 回答者,但它不能确定这种关系是否是互惠的:
SELECT user1.Id AS User_1, user2.Id AS User_2
FROM Posts p
INNER JOIN Users user1 ON p.OwnerUserId = user1.Id
INNER JOIN Posts p2 ON p.AcceptedAnswerId = p2.Id
INNER JOIN Users user2 ON p2.OwnerUserId = user2.Id
WHERE p.OwnerUserId <> p2.OwnerUserId
AND p.OwnerUserId IS NOT NULL
AND p2.OwnerUserId IS NOT NULL
AND user1.Id <> user2.Id
GROUP BY user1.Id, user2.Id HAVING COUNT(*) > 1;
对于不熟悉架构的人来说,有两个这样的表:
Posts
--------------------------------------
Id int
PostTypeId tinyint
AcceptedAnswerId int
ParentId int
CreationDate datetime
DeletionDate datetime
Score int
ViewCount int
Body nvarchar (max)
OwnerUserId int
OwnerDisplayName nvarchar (40)
LastEditorUserId int
LastEditorDisplayName nvarchar (40)
LastEditDate datetime
LastActivityDate datetime
Title nvarchar (250)
Tags nvarchar (250)
AnswerCount int
CommentCount int
FavoriteCount int
ClosedDate datetime
CommunityOwnedDate datetime
和
Users
--------------------------------------
Id int
Reputation int
CreationDate datetime
DisplayName nvarchar (40)
LastAccessDate datetime
WebsiteUrl nvarchar (200)
Location nvarchar (100)
AboutMe nvarchar (max)
Views int
UpVotes int
DownVotes int
ProfileImageUrl nvarchar (200)
EmailHash varchar (32)
AccountId int
【问题讨论】:
-
有人系统地浏览了我的个人资料,并否决了我在 Stackoverflow 上提供的所有问题和答案。管理员似乎也满足于让它发生。因此,我会要求该帖子的任何后续访问者请真诚地投票并发表评论,解释您为什么认为该帖子有用或没有发现该帖子有用。我不想沉迷于一些可悲的针锋相对的事情,我只是想帮助下一个人。谢谢!
标签: sql sql-server select sql-server-2017 dataexplorer