0

質問があります(かなり長いですが、要点は次のとおりです)。

Name.find_by_sql(['SELECT IFNULL(users.last_name, "nil") FROM ユーザー
                  JOIN user_groups ON user_groups.user_id = users.id
                  groups.id = user_groups.grous_id でグループに参加
                  WHERE users.first_name IN (?)', ['Sam','Sally']]) AND groups.name='baseball'

現在、サムは野球グループに所属していますが、サリーはそうではありません。

戻ってくることを願っています(サムの姓はヒルです)

['ヒル','ゼロ']

しかし、私は ['Hill'] しか取得していません。「nil」が返されない理由がわかりません。「nil」が失われている可能性があると思ったので、各結合ステートメントでも「LEFT OUTER JOIN」を試しましたが、まだ1つのアイテムしか返されていません。

4

1 に答える 1

2

groups.name に対するフィルターがWHERE句に含まれているため、応答が返されません。これにより、野球グループに属するユーザーのみが返されます。に条件を追加するJOINと、野球グループに属していないユーザーが返され、予期される NULL 値が返されます。

JOIN groups ON groups.id = user_groups.grous_id AND groups.name='baseball'
于 2011-08-10T17:52:55.090 に答える