2016-05-19 3 views
0

現在、完全なリストのために複数のレコードを正常に返す複雑なクエリがあります。この問合せには、LEFTJOINSを含むLEFTJOINSが含まれています。グループの特定のレコードを選択する必要があるレポートを作成しています。私は、左ジョイントを含む複数のジョインがある場合に、このリクエストをどのように形成するかを見つけるのが難しいです。返されるパラメータはparams [:search]にあります。私が使用しようとしていますクエリは次のとおりです。複数の結合を使用して見つかった結果のクエリで特定のレコードをparams []で見つける方法

@horses = Horse.find_by_sql["SELECT horses.id, horses.horse_name, horses.registration_number, horses.registration_number_2, horses.sire_name, horses.dam_name, horses_1.horse_name AS sire_name, horses_2.horse_name AS dam_name, horses.foaling_date, breeds.breed_name, colours.colour_name, genders.gender_name, owners.last_name, horses.arrival_date, horses.date_left, horses.notes FROM (((((horses LEFT JOIN horses AS horses_1 ON horses.sire_id = horses_1.id) LEFT JOIN horses AS horses_2 ON horses.dam_id = horses_2.id) LEFT JOIN breeds ON horses.breed_id = breeds.ID) LEFT JOIN colours ON horses.colour_id = colours.ID) LEFT JOIN genders ON horses.gender_id = genders.ID) LEFT JOIN Owners ON horses.owner_id = Owners.ID WHERE horses.id = ? ORDER BY horses.horse_name", params["search"]] 

は、以下の質問の後に更新:

は本当の利点は、クエリは、検索パラメータを指定せずに正常に動作しますので、実際には、クエリで、テーブルをリストにありません私は馬のリストを作成するために使用します。 params ["search"]を追加すると問題が発生しますが、デバッガparams ["search"] = 5を使用して正しい値が返されることを確認しました。

私が得るエラーは私に、私がすでにやったのと同じ提案を与えます。私はちょうど私が見ることができない本当に愚かな何かをしているに違いない。

エラーメッセージ:引数の 間違った番号(1..2 0)の提案:#Post.find_by_sql [ "投稿からタイトルを選択する場所著者=?"、START_DATE]事前

であなたに感謝

+0

テーブルを見せていただけますか?また、特定のレコードを選択できることに基づいて説明してください。 –

+0

paramを 'find_by_sql'メソッドに渡すより良い方法か、より良い方法でクエリを構築することを意味しますか?クエリの置換パラメータはおそらくこれを行うための最良の方法です。全体的な複雑さに関しては、モデル関係が確立されていれば、これはArelクエリにとってはかなり簡単なものになるはずです。 –

+0

問題をよりよく説明できる上記の質問を更新しました。 – user3331154

答えて

0

これに対する答えは次のとおりです。 "find_by_sql"と "["。このスペースを入れるとうまく動作します。

関連する問題