我想在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
,但我无法过滤那些没有接受答案的人。
类型Posts
有AcceptedAnswerId int
,但不管我放的int
,我什么也得不回来。我甚至无法找到这个属性的含义或什么价值是合法的。对于PostTypeId
我刚刚尝试过,发现1
是问题而2
是答案。
我还查看了Type question类型,找到了accepted_answer_id
,但没有关于它是什么的文档。此外,我不明白如何使用这些问题类型(使用FROM Questions
给出错误)或者这些是正确的方法。我知道我通过调用其中一种返回此类型"的方法来检索它们。
最后,我想知道我写的是不是一个正确的方法。过滤器的应用顺序是重要还是同时适用?什么是最佳实践"我想要打电话的方式?
答案 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。