2011-04-19 45 views
0

有没有办法在RoR中运行一个查询,其结果与以下相同?Ruby on Rails中的SUBSTRING_INDEX?

SELECT SUBSTRING_INDEX(notes, ',' , 1) AS notes FROM <table> WHERE event = 'Bar' 

我试过并尝试过,但substring_index部分似乎不是友好的find_by_sql函数。

更新这是我试图制作的查询的更准确的描述。

SELECT SUBSTRING_INDEX(notes, ',', 1) notes, COUNT(*) cnt FROM <table> WHERE event = 'Foo' GROUP BY SUBSTRING_INDEX(notes, ',', 1) ORDER BY COUNT(*) DESC 

我接近这个电话:

Foo.where("event = 'Foo'").group('notes').order('count_all').count() 

但它显然不完全正确。

+0

为什么不使用Ruby来获取子字符串? – Mischa 2011-04-19 15:16:43

+0

因为我试图做的实际上是按照该值对结果进行分组。我只是简化了这个例子。我将用更复杂的查询进行更新,以便您理解。 – keybored 2011-04-19 15:22:26

回答

0
Foo.select("SUBSTRING_INDEX(notes, ',', 1) AS notes, COUNT(*) AS cnt"). 
where(:event => "Foo").group('notes').order('cnt DESC') 
+0

这是我见过的最接近的!不幸的是,计数没有得到显示。有任何想法吗? – keybored 2011-04-19 15:53:34

+0

其实,看起来问题是你不能做AS并将名称改为别的。例如,当我将注释改为AS时,它不显示任何内容。 – keybored 2011-04-19 16:05:56