2

Я хочу взять для каждого значения в массиве первые 10 записей, найденных в db.Получить данные из таблицы для каждого элемента IN в массиве

Использование оператора IN в получении всех записей сразу, лучше подходит для меня, потому что я могу легко их сгруппировать, но проблема в том, что для каждого значения в массиве я получаю 100 записей, и мне нужно только первые 10 записей. Как я могу получить их?

Это то, что я использую сейчас, но нижеприведенный код принимает 100 записей из таблицы для каждого элемента массива.

arr = [1, 2, 3] 

Result.where('date(created_at) = ? AND word_id IN (?)', Date.today - 1.day, arr) 

o = _ 
o.group(:value).count 

Спасибо

+0

Можете ли вы уточнить ваш вопрос – pramod

+0

Каково ваше определение «первых» 10 строк? –

+0

Кроме того, что такое РСУБД? –

ответ

0

ищут что-то вроде этого

arr = [1, 2, 3]

result = arr.collect { |i| result << Result.where('date(created_at) = ? AND word_id IN (?)', Date.today - 1.day, i).order(:id).limit(10) }.flatten 

или

result = arr.map { |i| result << Result.where('date(created_at) = ? AND word_id IN (?)', Date.today - 1.day, i).order(:id).limit(10) }.flatten 

получить счет на

result.count

+0

Он будет работать для массива с 2, 3 элементами, но что вы будете делать, и у вас есть 1000 элементов или даже больше в массиве. Кроме того, группировка и подсчет столбца дадут вам дубликаты. Благодарю вас за усилия. – John

Смежные вопросы