rails和sql,其中的NOTNULL不能正常使用join。Rails 2.3.5和Ruby 1.8.7-mysql 5

rails和sql,其中的NOTNULL不能正常使用join。Rails 2.3.5和Ruby 1.8.7-mysql 5,sql,ruby-on-rails,inner-join,Sql,Ruby On Rails,Inner Join,我有3个表和模型: 品牌 品牌数据记录 及 品牌\u数据\u记录\u品牌-连接表 在rails中,我需要给定品牌的给定日期范围内的所有品牌数据记录,其中给定属性在数据库中不为null 因此,我: BrandDataRecord.find(:all, :select => column_match, :joins => :brands, :conditions => ["brand_data_records_brands.brand_id = ? and date_retriev

我有3个表和模型: 品牌 品牌数据记录 及 品牌\u数据\u记录\u品牌-连接表

在rails中,我需要给定品牌的给定日期范围内的所有品牌数据记录,其中给定属性在数据库中不为null

因此,我:

BrandDataRecord.find(:all, :select => column_match, :joins => :brands, :conditions => ["brand_data_records_brands.brand_id = ? and date_retrieved >= ? AND date_retrieved <= ? and ? IS NOT NULL",brand.id,start_date,end_date,column_match])

BrandDataRecord.find(:all,:select=>column\u match,:joins=>:brands,:conditions=>[“brand\u data\u records\u brands.brand\u id=?和检索日期>=?和检索日期您可能想引用该列:

 `sentiment` IS NOT NULL

你无意中做的是断言字符串
“情绪”
不是空的,当然它永远不会是空的。传入
:情绪
“情绪”。在你的条件下,to _sym'
应该解决这个问题,因为符号在转换时用反引号转义。

我尝试了符号方法,mysql是:SELECT来自
brand\u data\u records
内部连接
brand\u data\u records\u brands
上的
brand\u data\u records\u brands
。id内部连接
brands
上的
brands
。id=
brand\u data\u records\u brands
。品牌id在哪里(brand_data_records_brands.brand_id=330516084和检索日期>='2011-05-02'和检索日期,如果我将情绪作为一个符号并这样做:匹配_records=BrandDataRecord.find(:all,:select=>column_match,:joins=>:brands,:conditions=>[“brand_data_records_brands.brand_id=?和检索日期>=”和检索日期>>和检索日期,是的,我的意思是“字符串永远不会为空”,这并不是说它永远不会为空。啊,symbol方法在Sequel中起作用。如果你想安全起见,你可能会使用
ActiveRecord::Base.connection.quote\u table\u name(column\u match)
但这更难看。只需注意与SQL保留关键字匹配的列名,如
COUNT
,或其中包含空格的列名。还要绝对确保
column\u match
不是直接从用户输入中获取的。
 `sentiment` IS NOT NULL