2017-11-20 12 views
3

私はPadrino Webアプリケーションを開発しています。クエリ結果にフィールド名が重複しないようにする方法

  • Userテーブル::私は2つのテーブルを持っているidnameaddressフィールド
  • Postテーブルを持っている:私はそれらを結合した場合、

    User.join(:posts, user_id:, :id) 
    
    iduser_idcontent

を持っています

同じフィールドを持つ2つのフィールドを返しますid名前:

id name address id user_id content 
1 jim ***  3 1  post1 

が、私はこれらのid秒のそれぞれの名前を変更したいと思います。

u_id name address p_id user_id content 
1 jim ***  3  1  post1 

私はpadrinoプロジェクトのpostgresql dbにSequelアダプターを使用しています。 mysqlのクエリで が、それはこのようになります。

select u.id as u_id, 
     u.name, 
     u.address, 
     p.id as p_id, 
     p.user_id as user_id, 
     p.content 
from users u 
    join posts p on u.id = p.user_id 

私は何をすべきでしょうか? 私が望むのはSQLクエリではなく、Ruby言語のコードです。ありがとう。

+2

クエリはちょうど同様のPostgresに動作すること。 'p.user_id as user_id'は' p.user_id'と全く同じですので、カラム名と同じエイリアスを割り当てることは無用です。 –

答えて

1

あなたは、選択されている列を設定するためにDataset#selectを使用する必要があります。

User.from{users.as(:u)}.join(Sequel[:posts].as(:p), user_id: :id). 
    select{[u[:id].as(:u_id), u[:name], u[:address], 
      p[:id].as(:p_id), p[:user_id].as(:user_id), p[:content]]} 
関連する問題