我是一个新手SQL-er试图将两个不相关的查询的结果加入到表中。我使用JOIN,UNION,嵌套的SELECT语句等在SO中查看了很多示例,但似乎都没有。以下是我的表格和相关专栏:
用户: user_ID |用户名
活动: event_ID | user_ID | user_ID_affected
情况是多人游戏。我想要做的是根据发生的每个事件的用户ID“查找”用户名。我可以根据事件中的事件查看用户的用户名,但不能同时查看来自用户的usernameAffected。
以下是我的查询,它们都可以单独运作:
SELECT Events.event_ID AS eventID, Events.user_ID AS userID, Users.username
AS username1, Events.user_ID_affected AS userIDAffected
FROM Events
LEFT JOIN Users ON Events.user_ID = Users.user_ID
WHERE Events.event_ID > 11337
ORDER BY Events.event_ID ASC;
和
SELECT Users.username AS usernameAffected
FROM Users
WHERE Users.user_ID = Events.user_ID_affected;
但是尽可能地尝试我无法将它们结合起来。我希望输出的结果是这样的列:
eventID | userID | username1 | userIDaffected | usernameAffected
有什么想法吗?
答案 0 :(得分:1)
我认为您在这里需要的是两次加入Users
表,一次是针对行动的用户,另一次是接收该行动的用户:
SELECT
e.event_ID AS eventID,
e.user_ID AS userID,
u1.username AS username,
e.user_ID_affected AS userID_affected,
u2.username AS username_affected
FROM Events e
LEFT JOIN Users u1
ON e.user_ID = u1.user_ID
LEFT JOIN Users u2
ON e.user_ID_affected = u2.user_ID
WHERE
e.event_ID > 11337
ORDER BY
e.event_ID ASC;