SQL 在 Stack Exchange Data Explorer 上 - 定义值

SQL on Stack Exchange Data Explorer - defining values

我是 Stack Overflow 的新手,是一名非常新手的编码员。我正在使用 this tutorial to learn how to write queries to search the Stack Exchange Data Explorer.

我正在查看这行代码:

SELECT p.Title, p.Id, p.Score, a.Score AS "Accepted Score", 
u.DisplayName AS "Asker", au.DisplayName AS "Answerer"

FROM Posts p
JOIN Posts a ON p.AcceptedAnswerId = a.Id
JOIN Users u ON p.OwnerUserId = u.Id
JOIN Users au ON a.OwnerUserId = au.Id
WHERE p.PostTypeId = 1
AND p.Score >= 25
and p.AcceptedAnswerId IS NOT NULL
ORDER BY p.Score DESC

...我想确保我理解它。我有点卡住的部分是:

JOIN Posts a ON p.AcceptedAnswerId = a.Id
JOIN Users u ON p.OwnerUserId = u.Id
JOIN Users au ON a.OwnerUserId = au.Id

我说的对吗 (1) 我们本质上是在定义 "a"、"u" 和 "au",以及 (2) "a" 表示具有已接受答案的帖子的所有用户 ID (3 ) "u" 表示同时出现在帖子和用户个人资料中的用户 ID (4) 并且 "au" 表示答案帖子和用户的横截面?

我想我很困惑为什么你需要在这里定义 "u"。是不是这样结果就会 return 一个指向用户实际个人资料的超链接,而不是仅仅给出一个数字?

'a' 表示 post,通过将其加入表示为 'p' 的 post 以及 AcceptedAnswerId,您的数据集将仅使用 AcceptedAnswers 进行过滤。这也称为自连接,'p' 包含提出问题的用户信息,'a' 包含回答者的信息,当 'u' 是 table 的别名时包含用户信息与 'p' 的 ownerid 连接,因此它 returns 提问者的用户信息,同样,用户 table 被用作 'au' 来检索回答者信息。