我有两个简单的表,一个名为itineraries
,其中包含假日行程的详细信息,另一个名为users
,其中包含用户的详细信息。其他用户创建行程,用户可以复制他们的行程并添加旅行社,因此copied_from_id是来自users.id
的原始创建用户的ID。
我已使用以下查询加入itineraries.user_id
至users.id
完美运作:
SELECT
itineraries.travel_agent_id,
itineraries.copied_from_id,
itineraries.user_id,
users.full_name,
users.username
FROM `gadabouting_gadabouting_production`.`itineraries`
INNER JOIN `gadabouting_gadabouting_production`.`users` ON itineraries.user_id=users.id
WHERE itineraries.travel_agent_id='253'
给我以下输出:
+-----------------+------------------+---------+-------------+-------------+
| travel_agent_id | original_creator | user_id | full_name | username |
| 253 | 501 | 1465 | John Smithy | j.smithy |
| 253 | 501 | 1465 | John Smithy | j.smithy |
| 253 | 501 | 1474 | Ben Stockes | ben.stockes |
+-----------------+------------------+---------+-------------+-------------+
(travel_agent_id
和original_creator
列与users.id
相同。
我现在要做的是将itineraries.travel_agent_id
和itineraries.original creator
映射到users.full_name
和users.username
列(因此请full_name
和{{1每个username
和travel_agent_id
列旁边都打印了一些列,但我无法弄清楚如何做到这一点。我现在花了几个小时就完成了它,无法理解我的想法围绕它。我需要做更多的连接吗?
我已经查看了其他几个关于多个连接的SO问题,但据我所知,它们都没有覆盖在同一列上“一次又一次”的“回复”的过程我想在这里做。
这可能吗?非常感谢任何帮助!
由于
答案 0 :(得分:0)
您可以反复加入同一个表,但是您需要为每个表使用别名,以便您可以指定要使用的别名。如果按名称访问结果,则还需要删除某些字段名称。
(在其他表上使用别名也很方便,使查询更简洁。)
select
i.travel_agent_id,
i.copied_from_id,
i.user_id,
u.full_name,
u.username,
ut.full_name as travel_agent_full_name,
ut.username as travel_agent_username,
uc.full_name as creator_full_name,
uc.username as creator_username
from
gadabouting_gadabouting_production.itineraries as i
inner join gadabouting_gadabouting_production.users as u on u.id = i.user_id
inner join gadabouting_gadabouting_production.users as ut on u.id = i.travel_agent_id
inner join gadabouting_gadabouting_production.users as uc on u.id = i.original_creator
where
i.travel_agent_id = '253'