У меня есть 3 таблицы и модели: бренды brand_data_records и brand_data_records_brands - таблица соединения
В рельсах я хочу, чтобы все brand_data_records для данного диапазона дат для данного бренда, где данный атрибут не равен нулю в БД.
Итак, у меня есть:
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])
Это генерирует этот sql:
SELECT sentiment FROM `brand_data_records` INNER JOIN `brand_data_records_brands` ON `brand_data_records_brands`.brand_data_record_id = `brand_data_records`.id INNER JOIN `brands` ON `brands`.id = `brand_data_records_brands`.brand_id WHERE (brand_data_records_brands.brand_id = 330516084 and date_retrieved >= '2011-05-02' AND date_retrieved <= '2011-06-01' and 'sentiment' IS NOT NULL)
Что обычно работает, но возвращает кучу дополнительных записей с нулевым значениемзначение.Я думаю, что это как-то связано с объединениями, если я удаляю их с помощью sql, только это работает нормально, но я не уверен, как исправить в rails (или даже в sql для этого факта)