如何获得指定用户的答案并且没有接受答案的所有问题?

时间:2014-05-18 07:14:52

标签: tsql dataexplorer

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

  

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

我从未编写过这样的代码而且documentation缺乏。以下是我从示例中收集的内容以及稍有的文档:

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是答案。

我还查看了Type question类型,找到了accepted_answer_id,但没有关于它是什么的文档。此外,我不明白如何使用这些问题类型(使用FROM Questions给出错误)或者这些是正确的方法。我知道我通过调用其中一种返回此类型"的方法来检索它们。

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

1 个答案:

答案 0 :(得分:0)

目前你只看一个用户的帖子。但是你需要得到相应问题的AcceptedAnswerId字段。如果问题直到现在还没有被接受的答案,那么该字段q null。我通过在帖子表格中添加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

来排除已结束的问题

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