我想我现在有一点停电......
我有几个这样的MySQL表:
预定:
id - int starttime - datetime 结束时间 - 日期时间 user1 - int user2 - int
+--+--------------------+-------------------+-----+-----+
|id| starttime | endtime |user1|user2|
+--+--------------------+-------------------+-----+-----+
|1 |2017-03-17 15:00:00 |2017-03-17 16:00:00| 1 | 3 |
+--+--------------------+-------------------+-----+-----+
表用户: id - int username - varchar
+--+--------+
|id|username|
+--+--------+
|1 |Rainer |
|2 |Horst |
+-----------+
现在我想进行查询,将我的用户的起始时间,结束时间和名称放在一行。
有人可以帮忙吗?
提前致谢。
此致 Gardinero
答案 0 :(得分:1)
尝试这样的事情:
SELECT b.*, u.username
FROM bookings b
LEFT JOIN users u
ON b.user1 = u.id
OR b.user2 = u.id
如果您想了解有关加入的更多信息,请创建从一个表到另一个表的连接: https://blog.codinghorror.com/a-visual-explanation-of-sql-joins/
我没有测试过这段代码,因此您可能需要在复制粘贴失败时进行调试。
答案 1 :(得分:1)
您需要为每列创建一个联接。试试这个:
SELECT b.*, u1.username username1, u2.username username2
FROM bookings b
LEFT JOIN users u1 ON b.user1 = u1.id
LEFT JOIN users u2 ON b.user2 = u2.id
答案 2 :(得分:0)
这个简单的查询应该可以解决问题:
SELECT bookings.starttime, bookings.endtime, users.username FROM
bookings
INNER JOIN users
ON bookings.user1 = users.id OR bookings.usert = users.id
我测试了查询,效果很好。
答案 3 :(得分:0)
问题是,如果我使用前两个答案中的JOIN,我会得到两个结果。
2017-03-17 15:00:00 - 2017-03-17 16:00:00 - Rainer
2017-03-17 15:00:00 - 2017-03-17 16:00:00 - Horst
但我希望只收到两个用户名的结果:
2017-03-17 15:00:00 - 2017-03-17 16:00:00 - Rainer - Horst
答案 4 :(得分:0)
你需要两次加入同桌
SELECT b.*,u1.*, u2.*
FROM bookings b
LEFT JOIN users u1
ON b.user1 = u1.id
join users u2 b.user2 = u2.id
尝试这个但是需要表中的两个用户