我想编写一个查询而不是运行太多命令来获取问题列表。
有两种用户:访客和注册用户。两者都保存在两种数据库中。
我正在写这个查询,所以请有人解释我如何区分它们。
SELECT * FROM question
LEFT JOIN `user` ON user.`ID` = question.`lastAnswererID`
LEFT JOIN guestusera ON guestusera.aID = question.lastAnswererID
请记住,用户表可能包含用户的属性,其中只有访客姓名 ID 和电子邮件地址。
现在我想计算声誉,但也不知道如何将它们添加到这个中。
SELECT SUM(reputation) FROM action WHERE userid=?id AND reputation>0
以下 ?id 分别是所有 2 种情况下的 guestusera.aId 和 user.Id(已注册和未注册)。
现在这是关于 lastanswerId 信息。我想从 user 和 guestuserq 获取另一件事是 question.askerId。
现在我可以获得其他信息。我如何区分它们。区分意味着我想知道用户是访客还是注册用户。如果 user.lastanswererId 为 null 则表示用户未注册。
有人指导我如何混合所有这些命令。
if (rdr["lastAnswererID"] == DBNull.Value)
{
UserManager.UserSummary user = new UserManager.UserSummary();
user.Email = rdr["email"].ToString();
user.Name = rdr["name"].ToString();
user.URL = rdr["website"].ToString();
ques.LastAnswerer = user;
}
else
{
UserManager.UserSummary userSumm = new UserManager.UserSummary();
userSumm.ID = Convert.ToInt32(rdr["ID"]);
userSumm.Name = rdr["name"].ToString();
userSumm.HasPhoto = Convert.ToBoolean(rdr["hasPhoto"]);
ques.LastAnswerer = userSumm;
}
这就是我的 C# 代码处理这个问题的方式。现在有人知道我如何从提出问题的用户表中访问其他用户。有太多用户附加到这个问题。