SQL - 如何从 StackExchange 数据库中获取用户最喜欢的帖子标题
SQL - How to get a user's favorite posts title from StackExchange Database
我正在做一个分析 Whosebug 用户行为的项目,我需要从 Whosebug 获取数据,我需要获取的数据之一是从 stackexchange 数据库中获取用户最喜欢的 posts 标题。现在,我只弄清楚如何获取用户喜欢的信息如下:
select VT.name, U.DisplayName
from VoteTypes VT, Votes V, Users U
where VT.Id = 5 and
VT.Id = V.VoteTypeId and
U.Id = V.UserId and
U.Id = '85597'
我认为下一步是找到用户投票的 posts,然后匹配 userId。但我不知道这是否是正确的步骤。我找不到用户投票和问题之间的任何联系 post
SELECT
vt.name
, u.DisplayName
FROM VoteTypes vt
, Votes v <<<<<<<<< not good
, Users u <<<<<<<<< not good
WHERE vt.Id = 5
AND vt.Id = v.VoteTypeId <<<<<<<<< join predicate (vt = v)
AND u.Id = v.UserId <<<<<<<<< join predicate (u = v)
AND u.Id = '85597
只需 停止在 table 名称之间使用逗号 。'这个简单的步骤将迫使您更仔细地考虑联接。
将连接谓词移动到它们在 ON 之后引用的 table。 (连接谓词引用不同的 table 等运算符的两边。)
SELECT
vt.name
, u.DisplayName
FROM VoteTypes vt
, Votes v ON vt.Id = v.VoteTypeId
, Users u ON u.Id = v.UserId
WHERE vt.Id = 5
AND
AND
AND u.Id = '85597'
用适当的连接类型替换那些可怕的逗号,并进行整理。
SELECT
vt.name
, u.DisplayName
FROM VoteTypes vt
INNER JOIN Votes v ON vt.Id = v.VoteTypeId
INNER JOIN Users u ON u.Id = v.UserId
WHERE vt.Id = 5
AND u.Id = '85597'
完成。
如果您的课程使用的是旧语法;考虑获得更好的课程。
我正在做一个分析 Whosebug 用户行为的项目,我需要从 Whosebug 获取数据,我需要获取的数据之一是从 stackexchange 数据库中获取用户最喜欢的 posts 标题。现在,我只弄清楚如何获取用户喜欢的信息如下:
select VT.name, U.DisplayName
from VoteTypes VT, Votes V, Users U
where VT.Id = 5 and
VT.Id = V.VoteTypeId and
U.Id = V.UserId and
U.Id = '85597'
我认为下一步是找到用户投票的 posts,然后匹配 userId。但我不知道这是否是正确的步骤。我找不到用户投票和问题之间的任何联系 post
SELECT
vt.name
, u.DisplayName
FROM VoteTypes vt
, Votes v <<<<<<<<< not good
, Users u <<<<<<<<< not good
WHERE vt.Id = 5
AND vt.Id = v.VoteTypeId <<<<<<<<< join predicate (vt = v)
AND u.Id = v.UserId <<<<<<<<< join predicate (u = v)
AND u.Id = '85597
只需 停止在 table 名称之间使用逗号 。'这个简单的步骤将迫使您更仔细地考虑联接。
将连接谓词移动到它们在 ON 之后引用的 table。 (连接谓词引用不同的 table 等运算符的两边。)
SELECT
vt.name
, u.DisplayName
FROM VoteTypes vt
, Votes v ON vt.Id = v.VoteTypeId
, Users u ON u.Id = v.UserId
WHERE vt.Id = 5
AND
AND
AND u.Id = '85597'
用适当的连接类型替换那些可怕的逗号,并进行整理。
SELECT
vt.name
, u.DisplayName
FROM VoteTypes vt
INNER JOIN Votes v ON vt.Id = v.VoteTypeId
INNER JOIN Users u ON u.Id = v.UserId
WHERE vt.Id = 5
AND u.Id = '85597'
完成。
如果您的课程使用的是旧语法;考虑获得更好的课程。