Rails3 и Arel для выбора с помощью IN и subselect - PullRequest
3 голосов
/ 12 августа 2010

У меня есть таблица с названием переводы.(И соответствующий класс ActiveRecord).Эта таблица содержит следующие поля id, key и value

Я хотел бы выбрать все переводы, в которых ключ соответствует данному запросу + все переводы, которые не соответствуют запросу, но делят ключ с переводомкоторый соответствует запросу.

Результирующий SQL может выглядеть примерно так:

SELECT * FROM TRANSLATIONS where key in
    (select key from Translations where value like '%some search%')

Я пробовал несколько вещей, но я не могу понять это.Любые идеи о том, как выразить это в Ареле?

Ответы [ 2 ]

3 голосов
/ 18 марта 2011

Аналогично @valodzka, но добавьте "t [....]" вокруг символа ключа

t = Table(:translations)
c = t.where(t[:value].matches('%some search%')).project(t[:key])
t.where(t[:key].in(c))
3 голосов
/ 18 августа 2010

Примерно так должно работать:

t = Table(:translations)
c = t.where(t[:value].matches('%some search%')).project(:key)
t.where(t[:key].in(c))
...