Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在不声明关联的情况下在Rails中正确编写此SQL查询?_Sql_Ruby On Rails_Postgresql - Fatal编程技术网

如何在不声明关联的情况下在Rails中正确编写此SQL查询?

如何在不声明关联的情况下在Rails中正确编写此SQL查询?,sql,ruby-on-rails,postgresql,Sql,Ruby On Rails,Postgresql,我在Rails应用程序中有一个独立的问题模型,通过YAML加载问题。我通过创建SaleQualifier(有一个问题id字段)找到正确的问题并将其加载到视图中,但我没有声明关联(例如SaleQualifier有一个问题),因为这会破坏站点的其他部分 现在,我希望根据SaleQualifier和Question模型中的字段在我的应用程序中查找SaleQualifier,我正在尝试编写正确的SQL查询,以便检索记录。有谁能帮助我理解如何有效地编写此命令,因为这是我第一次尝试编写自己的SQL命令 我的

我在Rails应用程序中有一个独立的问题模型,通过YAML加载问题。我通过创建SaleQualifier(有一个问题id字段)找到正确的问题并将其加载到视图中,但我没有声明关联(例如SaleQualifier有一个问题),因为这会破坏站点的其他部分

现在,我希望根据SaleQualifier和Question模型中的字段在我的应用程序中查找SaleQualifier,我正在尝试编写正确的SQL查询,以便检索记录。有谁能帮助我理解如何有效地编写此命令,因为这是我第一次尝试编写自己的SQL命令

我的模式:

create_table "questions", force: true do |t|
 t.text     "question_text"
 t.string   "answer_type"
 t.integer  "next_question_id_yes"
 t.integer  "next_question_id_no"
 t.datetime "created_at"
 t.datetime "updated_at"
 t.string   "sale_stage"
 t.boolean  "collectable",          default: false
end

  create_table "sale_qualifiers", force: true do |t|
   t.integer  "question_id"
   t.integer  "next_question_id",     default: 1
   t.datetime "created_at"
   t.datetime "updated_at"
   t.integer  "sales_opportunity_id"
   t.boolean  "has_answer",           default: false
   t.integer  "prior_question_id",    default: 1
   t.integer  "collection_id"
 end
我的问题.rb:

class Question < ActiveRecord::Base
 validates :next_question_id_yes, :question_text, :answer_type, presence: true

 File.open("#{Rails.root}/config/initializers/questions.yml", 'r') do |file|
   YAML::load(file).each do |record|
      Question.create(record) unless Question.exists?(record)
   end
 end
end
我试图达到的目的是找到属于销售机会的所有SaleQualifier,其答案为“true”,并且在问题销售阶段的预期位置具有问题id

我所尝试的:

SaleQualifier.find_by_sql("SELECT * FROM sale_qualifiers WHERE sales_opportunity_id = '83' has_answer = 'true' INNER JOIN questions ON questions.id = sale_qualifiers.question_id ORDER question.id desc")
这将导致以下错误:

SaleQualifier Load (15.8ms)  SELECT * FROM sale_qualifiers INECT * FROM sale_qualifiers WHERE sales_opportunity_id = '83' has_answer = 'true' INNER JOIN questions ON questions.id = sale_qualifiers.question_id ORDER question.id desc
PG::Error: ERROR:  syntax error at or near "*"
LINE 1: SELECT * FROM sale_qualifiers INECT * FROM sale_qualifiers W...
有人能帮我理解如何写这个查询吗?

试试看

SaleQualifier.find_by_sql("SELECT sale_qualifiers.* FROM sale_qualifiers WHERE sales_opportunity_id = '83' has_answer = 'true' INNER JOIN questions ON questions.id = sale_qualifiers.question_id ORDER question.id desc")

谢谢-我收到以下错误:`SaleQualifier Load(0.8ms)SELECT sale_qualifiers.*来自sale_qualifiers,其中sales_opportunity_id='83'has_answer='true'internal JOIN questions.id=sale_qualifiers.question_id ORDER question.id desc PG::error:语法错误位于或接近“has_answer”第1行:…sale\u限定符,其中sales\u opportunity\u id='83'有\u答案`
SaleQualifier Load (15.8ms)  SELECT * FROM sale_qualifiers INECT * FROM sale_qualifiers WHERE sales_opportunity_id = '83' has_answer = 'true' INNER JOIN questions ON questions.id = sale_qualifiers.question_id ORDER question.id desc
PG::Error: ERROR:  syntax error at or near "*"
LINE 1: SELECT * FROM sale_qualifiers INECT * FROM sale_qualifiers W...
SaleQualifier.find_by_sql("SELECT sale_qualifiers.* FROM sale_qualifiers WHERE sales_opportunity_id = '83' has_answer = 'true' INNER JOIN questions ON questions.id = sale_qualifiers.question_id ORDER question.id desc")