rails和sql,其中的NOTNULL不能正常使用join。Rails 2.3.5和Ruby 1.8.7-mysql 5
我有3个表和模型: 品牌 品牌数据记录 及 品牌\u数据\u记录\u品牌-连接表 在rails中,我需要给定品牌的给定日期范围内的所有品牌数据记录,其中给定属性在数据库中不为null 因此,我: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
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