【发布时间】:2014-02-24 11:12:08
【问题描述】:
我想在 SQL 上实现只需要 3 秒的时间,我为此苦苦挣扎了好几个小时,我想加载所有记录并离开连接(如果存在),如果不存在,则不要给我相关的型号。
我要创建的查询如下:
"SELECT * FROM apartments LEFT JOIN comments ON apartments.id = comments.apartment_id AND comments.user_id = ?"
当我调用 apartment.cmets 时,它只会给我特定用户的记录(只能是一个),而不是每个用户的所有记录。
我试过了
Apartment.joins("LEFT OUTER JOIN comments ON comments.apartment_id = apartments.id AND comments.user_id = #{user_id}")
但它不起作用,因为当我调用 apartments.cmets 时,它会触发另一个查询,该查询返回所有可能的 cmets。
Apartment.includes(:comments).where("comments.user_id = ?", user_id)
也不行,因为它只返回有特定用户评论的公寓。
需要帮助!
【问题讨论】:
-
您的代码中有很多错误。没有 table_name 的
LEFT JOIN ON是什么?为什么这里的表名不同:LEFT OUTER JOIN trip_items ON comments.? -
你是正确的,固定的。我复制粘贴并更改名称以使其更易于理解
标签: ruby-on-rails activerecord rails-activerecord