0
私は巨大な問い合わせArelのエイリアステーブルからselectを生成するにはどうすればよいですか?
SELECT *
FROM comments
INNER JOIN (...subquery...) s1
ON comments.user_id = s1.user_id
AND comments.created_at = s1.max_created_at
でサブクエリとして使用するフォーム
SELECT c2.user_id, MAX(c2.created_at) as max_created_at
FROM comments AS c2
GROUP BY c2.user_id
でARELを使用してSQLを生成する必要があると私はcomments
テーブルを別名する方法を見つけ出すことはできませんサブクエリ
私が得ることができる最も近い
c2 = Comment.arel_table.alias
s1 = Comment.arel_table.project(
c2[:user_id], c2[:created_at].maximum.as('max_created_at')
).group('user_id').as('s1')
ですが、(C2が定義されていないのでエラー)これは間違ったSQL
SELECT c2.user_id, MAX(c2.created_at) as max_created_at
FROM comments
GROUP BY c2.user_id
を生成
にリードをエイリアシングせずにクエリを生成しますサブクエリの内部と外部のテーブル名が衝突するため、誤った結果が返されます。
これは、Arel::TableAlias
がproject
の方法にあるというエラーを示します。
s1 = c2.project(...
Arelを使用してエイリアステーブルをクエリするにはどうすればよいですか?
あなたはどのテーブル(またはこの場合、テーブルの別名で)から突出することを伝えるためにfrom
を使用することができます