Mysql 组合来自不同表的数据
我想我现在有点昏厥 我有几个MySQL表,如下所示:Mysql 组合来自不同表的数据,mysql,Mysql,我想我现在有点昏厥 我有几个MySQL表,如下所示: SELECT b.*, u.username FROM bookings b LEFT JOIN users u ON b.user1 = u.id OR b.user2 = u.id 预订: id-int 开始时间-日期时间 endtime-日期时间 user1-int user2-int +--+--------------------+-------------------+-----+-----+ |id| startti
SELECT b.*, u.username
FROM bookings b
LEFT JOIN users u
ON b.user1 = u.id
OR b.user2 = u.id
预订:
id-int
开始时间-日期时间
endtime-日期时间
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
用户名-varchar
+--+--------+
|id|username|
+--+--------+
|1 |Rainer |
|2 |Horst |
+-----------+
现在我想做一个查询,在一行中获取开始时间、结束时间和用户名称
有人能帮忙吗
提前谢谢
问候
Gardinero试试这样:
SELECT b.*, u.username
FROM bookings b
LEFT JOIN users u
ON b.user1 = u.id
OR b.user2 = u.id
如果要了解有关联接的更多信息,请创建从一个表到另一个表的联接:
我还没有测试这段代码,所以当复制粘贴失败时,您可能需要调试它。这个简单的查询应该可以做到:
SELECT bookings.starttime, bookings.endtime, users.username FROM
bookings
INNER JOIN users
ON bookings.user1 = users.id OR bookings.usert = users.id
我测试了这个查询,效果很好。问题是,如果我使用前面两个答案中的连接,我会得到两个结果
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
您需要两次加入同一个表
SELECT b.*,u1.*, u2.*
FROM bookings b
LEFT JOIN users u1
ON b.user1 = u1.id
join users u2 b.user2 = u2.id
尝试此操作,但需要两个用户都出现在表中您需要为每列创建一个联接。试试这个:
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
非常感谢,但如果我这样做,我会得到两个结果,一个是第一个用户名,一个是另一个。我想用两个名字得到一个结果,比如:2017-03-17 15:00:00-2017-03-17 16:00:00-Rainer-Horstry使用类似于group concat的东西。你为什么要它这样显示?也许你应该重新考虑一下你的桌子结构。在我看来,现在你的名字和姓氏似乎有了不同的记录。关于group concat的更多信息:完美,这就是我的案例的解决方案。谢谢大家的帮助!