機能しない次のクエリがあり、それを修正する方法を考えていました。
Player.select("players.*,
(SELECT COUNT(*) FROM Results
WHERE results.player_id = players.id and win = true)
as wins").where("wins > 0").order("wins desc")
ブール値が true に設定されている場合に、結果テーブルに外部キーが表示される回数をカウントして、親の Player レコードを制限しようとしていwin
ます。ただし、結果テーブルに外部キーが表示されることがありますが、ブールwin
フィールドが false になり、表示したくないレコードのカウントがゼロになることがあります。 .where("wins > 0") 句ですが、次のエラーが発生します。
PGError: エラー: 列 "wins" が存在しません
面白いのはwins
、私が試して注文するとフィールドが見つかりますが、where 句が追加されていないことです。