MySQL连接两个无关查询的结果
问题描述:
我是一个尝试将两个不相关查询的结果连接到一个表中的新手SQL-er。我在使用JOIN,UNION,嵌套的SELECT语句等方面看过很多例子,但似乎没有任何工作。以下是我的表格和相关列:MySQL连接两个无关查询的结果
用户: user_ID |用户名
活动: event_ID | user_ID | user_ID_affected
这种情况是多人游戏。我想要做的是根据发生的每个事件的用户ID“查找”用户名。我可以根据事件中的事件查找用户的用户名,但不能同时查看用户的用户名。
这里是我的查询,这两个独立工作:
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
有什么想法?
答
我认为,所有你所需要的就是两次加入到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;
'都工作individually' ..你的第二个查询将不会运行。 –
你是对的Tim - 现在我找不到工作的查询:(但逻辑是一样的:从Users表中查找用户名,其中userID与该事件的用户ID匹配。 – Arj
您能向我们展示示例数据以及您的预期产出表? –