私のアプリケーションでは、テーブル位置で複数の結合を行うクエリがあります。ちょうどこのように:Postgres - 各エイリアスからデータを取得する
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つの列はグループであり、1つのposition_idとして表示されます。
start.position_idとend.position_idのデータが異なるため、結果に表示されるposition_idという列は空です。
start.position_idをstart_position_idとして、すべての列の名前を変更する必要はありません。
各データグループを個別に取得するには、たとえば、 'start'テーブルからすべての列を取得します。 MYSQLでは、fetch_fieldsを呼び出してこの操作を行うことができ、 'start'のような別名を関数に与えます。
私はこれをPostgresで行うことはできますか?
よろしく、 ヌーノオリベイラ
あなたのクエリルックス(少なくとも)不完全。しかし、とにかくそれを少しフォーマットします。 – wildplasser
はい、その不完全な、私はちょうど問題があるimをparte置いた。その巨大なクエリ!ありがとうございます –
あなたの質問を理解することは難しいです。 'SELECT ...'句に列名のリストを入力するのは面倒ですか? – wildplasser