Пересечение SQL activerecord - PullRequest
       5

Пересечение SQL activerecord

0 голосов
/ 31 января 2012

У меня есть массив и оператор выбора SQL, который выводит список, очень похожий на массив. Я хочу сравнить результаты оператора SQL и массива и посчитать сходства. Я сделал это:

array = [H1, H3, H4, H6, H9]
sql_statement = S.connection.select_rows("select name from bla") # should get H1,H4,H10 

i = 0
sql_statement.each do |sql|
if (sql & array)
i += 1
end

Я хочу, чтобы ответ был равен 2 при совпадении H1 и H4.

Любая помощь?

Спасибо

Ответы [ 2 ]

0 голосов
/ 31 января 2012

Вы можете получить пересечение двух массивов следующим образом:

>> x = [ 1, 2, 3, 4 ]
>> y = [ 3, 4, 5, 6 ]
>> x & y
=> [ 3, 4 ]
>> (x & y).size
=> 2
0 голосов
/ 31 января 2012

Одно из возможных решений, если вы хотите использовать прямой SQL:

YourModel.count_by_sql(["SELECT count(*) FROM your_table_name WHERE your_column IN (?)", your_array])
...