Postgres - получает данные от каждого псевдонима - PullRequest
0 голосов
/ 28 марта 2012

В моем приложении у меня есть запрос, который делает несколько соединений с позиции таблицы.Вот так:

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 Ответ

1 голос
/ 28 марта 2012

Насколько я понимаю, вы не можете (или затрудняетесь) различить, к какой таблице принадлежит каждый столбец с общим именем (например, "position_id"), но нужно видеть только один из наборов общих столбцовв любое время.Если это так, используйте tablename.* в вашем SELECT, поэтому SELECT trips.*, start.*... будет отображать столбцы из поездок и начала, но не столбцы из других таблиц, участвующих в объединении.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...