Postgres - 从每个别名获取数据

时间:2012-03-28 14:35:05

标签: postgresql

在我的应用程序中,我有一个查询,它与表位置进行多个连接。就像这样:

SELECT *
FROM (...) as trips
join trip as t on trips.trip_id = t.trip_id

left outer join vehicle as v on v.vehicle_id = t.trip_vehicle_id

left outer join position as start on trips.start_position_id = start.position_id and start.position_vehicle_id = v.vehicle_id

left outer join position as "end" on trips.end_position_id = "end".position_id and "end".position_vehicle_id = v.vehicle_id

left outer join position as last on trips.last_position_id = last.position_id and last.position_vehicle_id = v.vehicle_id;

我的表位有35列(例如position_id)。

当我运行查询时,结果应该出现表位置3次,开始,结束和结束。但是postgres无法区分,例如,start.position_id,end.position_id和last.position_id。所以这3列是组,并显示为一个,position_id。

由于来自start.position_id和end.position_id的数据不同,结果中显示的列position_id为空。

无需重命名所有列,如下所示:start.position_id为start_position_id。

如何分别获取每组数据,例如,从表'start'获取所有列。在MYSQL中,我可以通过调用fetch_fields来执行此操作,并为函数提供别名,例如“start”。

但我可以在Postgres中这样做吗?

最诚挚的问候, 努诺奥利维拉

1 个答案:

答案 0 :(得分:1)

我的理解是你不能(或者发现很难)辨别具有共享名称(例如“position_id”)的每个列属于哪个表,但只需要查看其中一组共享列在任何时候。如果是这种情况,请在SELECT中使用tablename.*,因此SELECT trips.*, start.*...将显示跳转和开始的列,但不会显示连接中涉及的其他表中的列。

SELECT [...,] start.* [,...] FROM [...] atable AS start [...]