我在数据库(MySQL)中有一个模型和一个表。两个表中都有一个共同的列。我正在使用
编写数据库查询ActiveRecord::Base.connection.execute sql
where
sql = "select table_1.common_column, table_1.column_1, table_1.column_2, table_2.column_1, table_2.column_1"
这给出了一个数组数组,每个数组中有5列。
所以,我有两个问题
所有数组是否都有与[common_column, table_1.column_1, table_1.column_2, table_2.column_1, table_2.column_1]
相同的数据?
我有什么有效的方法可以使用吗?
答案 0 :(得分:0)
您可以按common_column
加入两个表,并使用select来表示表列。在我的示例中,我有questions
和jobs
表,其中包含公共列user_id
ActiveRecord::Base.connection.select_all(
Question.
joins('INNER JOIN answers ON questions.asker_id = answers.answerer_id').
select('questions.*, answers.*'))
在select
中,您可以更详细,别名列
select('questions.description as q_desc, answers.description as ans_desc')
答案 1 :(得分:0)
另一种选择是使用includes
,preload
,eager_load
方法。这里很好article about it。
使用示例:
Question.includes(:answers).find_each do |question|
do_something_with_question_columns(question.column_1, question.column_2, ...)
question.answers.each do |answer|
do_something_with_answer_columns(answer.column_2, answer.column_2, ...)
end
end