-1

我想在 SE Data Explorer 中创建一个查询,它执行以下操作:

获取所有(至少)由指定用户回答并且没有(任何人)接受的答案的问题。

我从未编写过这样的代码,并且缺少文档。这是我从示例中收集的行以及那里的少量文档:

SELECT a.id AS [Post Link] FROM Posts a WHERE a.OwnerUserId = ##UserId## and PostTypeId = 2

这个Gets all questions which have (at least?) an answer by a specified user,但我不能只过滤那些没有接受答案的人。

类型PostsAcceptedAnswerId int,但无论int我放什么,我都没有得到任何回报。我什至找不到这个属性的含义或什么值是合法的。因为PostTypeId我刚刚尝试过,发现那1是问题,2也是答案。

我还查看了类型类型问题,发现accepted_answer_id没有关于它是什么的文档。此外,我不明白如何使用这些问题类型(使用FROM Questions会出错)或者这些问题是否正确。我知道我通过调用“返回此类型的方法”之一来检索它们。

最后,我想知道我写的是否是正确的方法。过滤器的应用顺序重要还是同时应用?拨打我想要的电话的“最佳实践”方式是什么?

4

1 回答 1

1

目前,您只查看用户的帖子。但是你需要得到AcceptedAnswerId相应问题的字段。null如果问题直到现在还没有被接受的答案,则该字段可能是。我通过在 Posts 表上添加 a 来编辑您的查询JOIN以获取问题和问题的AcceptedAnswerId字段。

SELECT q.Id as [Post Link]
  FROM Posts a
    JOIN Posts q on a.ParentId = q.Id
  WHERE a.OwnerUserId = ##UserId##
    and a.PostTypeId = 2
    and q.AcceptedAnswerId is null

此时,您还可以通过添加排除封闭的问题and ClosedDate is null

您还可以在 dataexplorer找到并尝试我的解决方案。

于 2014-05-18T15:08:25.800 回答