我目前有一个复杂的查询,可以成功返回完整列表的多个记录。此查询包含LEFTJOINS,其中包含LEFTJOIN。我现在正在创建一个报告,该报告需要允许选择组中的特定记录。当有多个连接(包括左连接)时,我很难发现如何形成此请求。返回的参数在params [:search]中。我试图使用的查询是:
@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"] = 5,即预期的id。
我得到的错误给了我一个与我已经做过的相同的建议。我必须做一些非常愚蠢的事情,我无法看到。
错误讯息: 错误的参数数量(0表示1..2)建议:#Post.find_by_sql [" SELECT title FROM posts WHERE author =?",start_date]
提前感谢你
答案 0 :(得分:0)
答案是:" find_by_sql"之间应该有一个空格。和" ["。当我放入这个空间时,它工作正常。