Sql 将多个字段连接到另一个表中的一个字段
我有两张桌子: t普通 tblPlaces 我想执行一个Sql 将多个字段连接到另一个表中的一个字段,sql,oracle,Sql,Oracle,我有两张桌子: t普通 tblPlaces 我想执行一个,其中tbliteneraly=1以查看结果集: Place1 | Place2 | Place3 | Austria | Germany | Austria | 现在我的方向是 SELECT tblPlaces.PlaceName FROM tblPlaces JOIN tblPlaces.PlaceName ON tblItinerary.Place1 = tblPlaces.PlaceName JOIN tblPlac
,其中tbliteneraly=1
以查看结果集:
Place1 | Place2 | Place3 |
Austria | Germany | Austria |
现在我的方向是
SELECT tblPlaces.PlaceName
FROM tblPlaces
JOIN tblPlaces.PlaceName
ON tblItinerary.Place1 = tblPlaces.PlaceName
JOIN tblPlaces.PlaceName
ON tblItinerary.Place2 = tblPlaces.PlaceName
JOIN tblPlaces.PlaceName
ON tblItinerary.Place3 = tblPlaces.PlaceName
WHERE tblItinerary.ID = 1;
这个想法是正确的,但也有一些错误:要多次连接一个表,应该为每个表使用唯一的别名。此外,您还没有在任何地方实际加入
tblitinary
,并且您的加入语法不正确(您尝试加入tblPlaces.PlaceName
而不是tblPlaces
)。请尝试以下操作:
select p1.PlaceName as Place1
, p2.PlaceName as Place2
, p3.PlaceName as Place3
from tblItinerary i
join tblPlaces p1 on i.Place1 = p1.ID
join tblPlaces p2 on i.Place2 = p2.ID
join tblPlaces p3 on i.Place3 = p3.ID
where i.ID = 1;
如果要多次加入表,则必须为加入的表添加别名。Oracle。抱歉。imo将不会与
p1.PlaceName的“列别名”混淆。PlaceName为PlaceName1
等。当前的Place1
列别名与导致“混淆”的其他数据项匹配?代码是正确的。我稍后将删除此评论。@RyanVincent:也许你是对的,但我只是坚持提供的所需输出。所以不要删除你的评论,它应该澄清可能的混淆。
SELECT tblPlaces.PlaceName
FROM tblPlaces
JOIN tblPlaces.PlaceName
ON tblItinerary.Place1 = tblPlaces.PlaceName
JOIN tblPlaces.PlaceName
ON tblItinerary.Place2 = tblPlaces.PlaceName
JOIN tblPlaces.PlaceName
ON tblItinerary.Place3 = tblPlaces.PlaceName
WHERE tblItinerary.ID = 1;
select p1.PlaceName as Place1
, p2.PlaceName as Place2
, p3.PlaceName as Place3
from tblItinerary i
join tblPlaces p1 on i.Place1 = p1.ID
join tblPlaces p2 on i.Place2 = p2.ID
join tblPlaces p3 on i.Place3 = p3.ID
where i.ID = 1;