У меня есть база данных с двумя таблицами: теги и элементы.
У каждого предмета есть оценка, самые популярные предметы - самые популярные. Между тегами и элементами существует отношение многие ко многим.
Получить все элементы, принадлежащие тегу, легко. (= tag.items
) Но как мне найти 10 самых популярных предметов, принадлежащих этому тегу?
Так что на самом деле мне нужен рубиновый эквивалент
SELECT * from items INNER JOIN item_tags ON items.id = item_tags.item WHERE item_tags.tag = :tagid ORDER BY items.score DESC LIMIT 10
Поскольку в теге может быть много элементов, я предпочитаю, чтобы база данных выполняла эту работу, а не извлекала все элементы и затем фильтровала их вручную. (и если есть более быстрый способ выполнить эту операцию, это, безусловно, приветствуется!)