2017-11-27 5 views
0

私は、ユーザー名を取得するために、二度同じテーブルに参加したいと同じテーブルレールに2回参加しますか?

@array = UsersWalletsBalancesFrozen. 
joins("INNER JOIN userds userdsidto ON transactions.user_id_to=userdsidto.id"). 
joins("INNER JOIN userds userdsid ON transactions.user_id = userdsid.id").select("*") 

username_toこれが私の最後を得る唯一の参加は、私はそれが上書きだと思う作品だけで簡単に解決策としてその

+0

データに一致する行がないかどうかを確認できますか。一致する行が最初にそれが第2の同問題 – xeon131

答えて

0

に何らかの解決策があります...同じメソッドコールに入れようとしましたか:

@array = UsersWalletsBalancesFrozen.joins("INNER JOIN userds AS user_to userdsidto ON transactions.user_id_to=user_to.id INNER JOIN userds userdsid AS user_from ON transactions.user_id = user_from.id").select("transactions.*, user_to.username, user_from.username") 

PS:select('*')がデフォルトで呼び出されます。明示的に指定する必要はありません。

+0

への参加と一致するすべての行を持っていない参加のために存在しない場合はあなたがあなたの 'UsersWalletsBalancesFrozen'コードを貼り付けることができますので、また、私はこのクエリでは左外部結合を使用することを好むだろう質問? –

+0

はまだ – AntonTkachov

+0

あなたはどのフィールドをユーザからロードする必要がありますか?私はUsersWalletsBalancesFrozenの表は、ユーザーIDが含まれるので、他のユーザへのユーザからの転送を持っていると私は両方のユーザーのユーザー名とuser_to名 – AntonTkachov

関連する問題