2012-09-27 52 views
3

不是程序员,而是使用data.stackexchange.com。我在查询公共SE数据资源管理器,我指定的列名是无效的。另外,如何指定计数(帖子)和计数(投票)? 是否有人查询过data.se并知道数据库模式能够帮助我更正此代码?SQL查询 - 无效的列名称和参数 - 数据.ES

Select Count (u.Id) 
From Users u 
Left Join Posts p on u.Id = p.OwnerUserId 
Left join SuggestedEdits e on u.Id = e.OwnerUserId 
left join Votes v on u.Id = v.UserId 
WHERE ((u.CreationDate BETWEEN 'qwerty' AND 'qwerty') 
AND (p.CreationDate BETWEEN 'qwerty' AND 'qwerty') 
AND (p.ClosedDate is null) 
OR (e.CreationDate BETWEEN 'qwerty' AND 'qwerty')) 
AND Count (Posts) = x 
OR Count (Votes) = y 
Group by u.CreationDate, p.OwnerUserId, UserTypeId, u.DisplayName, p.CreationDate 
+0

@ Miguel-F感谢您的提示。我没有检查边栏,并使用有关架构的信息,但仍然无法使其工作。 –

+0

什么不适合你?你的Select语句在哪里? –

+0

我的select语句也不起作用。我想要符合这些标准的所有用户标识的数量。对不起,我是一个noob。 –

回答

2

你有没有尝试撰写查询选项found here。如果您单击该链接,它会在侧边栏的右侧显示数据库架构。

请注意,侧边栏可以隐藏,只需点击链接再次显示。那是你需要的吗?

编辑

我还没有真正知道你正在尝试做的完全一样。如果我处于你的位置,我会首先对每个单独的表执行一些简单的查询。这样你就可以看到那里存储了什么数据。

运行此查询,并检查了结果:

SELECT * 
FROM Users 
WHERE CreationDate BETWEEN '2012-06-01 08:00:00' AND '2012-06-02 09:00:00' 

运行此查询,并检查了结果:

SELECT * 
FROM Posts 
WHERE CreationDate BETWEEN '2012-06-01 08:00:00' AND '2012-06-02 08:10:00' 

运行此查询,并检查了结果:

SELECT * 
FROM Votes 
WHERE CreationDate BETWEEN '2012-06-01 08:00:00' AND '2012-06-02 08:10:00' 

我不确定为什么你在你的连接中包含了SuggestedEdits表,因为它没有出现,你正在使用临时表t表其他地方的表。所以把它放开。

现在看到数据看起来像什么后,你应该能够将它们拼凑在一起,找出你在做什么。我仍然不知道?希望这样的事情能帮助你开始。此查询将返回一些结果,但我不确定它是什么后。

SELECT Count(u.Id), Count(p.Id), Count(v.Id) 
FROM Users u 
LEFT JOIN Posts p on u.Id = p.OwnerUserId 
LEFT JOIN Votes v on u.Id = v.UserId 
WHERE u.CreationDate BETWEEN '2012-06-01 08:00:00' AND '2012-06-02 09:00:00' 
GROUP BY u.CreationDate, p.OwnerUserId, v.VoteTypeId, u.DisplayName, p.CreationDate 
相关问题