在我的数据库中,我创建了三个表,分别是user,user_group,user_group_info
我想做这样的查询,但我不知道如何加入这两个表。
SELECT * FROM user AS u
INNER JOIN user_group AS ug ON u.user_group_id=ug.user_group_id
INNER JOIN user_group_info AS ugi ON ug.user_group_id=ugi.user_group_id
WHERE ugi.language_id = 1
用户模型
class User < ApplicationRecord
self.table_name = "user"
self.primary_key = "user_id"
belongs_to :user_group
end
<小时/> 用户组模型
class UserGroup < ApplicationRecord
self.table_name = "user_group"
self.primary_key = "user_group_id"
has_many :user
belongs_to :user_group_info
end
<小时/> UserGroupInfo模型
class UserGroupInfo < ApplicationRecord
self.table_name = "user_group_info"
has_many :user_group
end
答案 0 :(得分:0)
您可以使用ActiveRecord创建查询,而不是手动创建。试试这个:
User.joins(user_group: :user_group_info).where(user_group_infos: { language_id: 1 })
这应该转化为您在问题中作为示例查询提供的内容。
您从User
开始,然后加入user_groups
。通过user_groups
,您加入user_group_infos
。最后,在user_group_infos
上添加条件。有几种方法可以写出来。
where("user_group_infos.language_id = ?", language_id)
# or
where(user_group_infos: { language_id: language_id })