2015-07-31 5 views
1

У меня есть три таблицы,Использование оператора выбора в рельсах запросов

продуктов имеет 3 колонки, позволяют им быть product_id, retailer_id, ID

product_urls имеет 2 колонки, url_id, ID

URLS имеет 2 столбца, url_id, absolute_url

Все ассоциации были выполнены в моделях.

Продукты & product_urls соединяются на ид = ID (Продактс "имеет много" отношения с product_urls)

product_urls & URLs соединяются на url_id = ид (product_urls "относится к" отношения с URLs)

продукты & URL имеет отношение «имеет много отношений»

Я пытаюсь написать запрос, который выбирает столбец A, B, C из таблицы 1 и X из таблицы3.

Мой запрос:

  • Product.joins (: URLS) .select (: product_id,: retailer_id,: absolute_url) .где (: идентификатор => 100,: URLS => {: url_id = > 100})

Я могу выполнить запрос без каких-либо ошибок, но я не могу получить данные для X., когда я проверяю для SQL запроса это

  • выберите products.product_id , products.retailer_id, products.absolute_url ........ is exec пространяется.

Пожалуйста, помогите мне, как извлечь значение из URL-адресов?

+0

Попытка 'Table1.joins (: Таблица3) .Select ("А, В, С, table3.X"), где (.: D => 100,: Таблица3 = > {: Y => 100}) ' – Pavan

+0

Привет, Спасибо за ответ. Но, когда я использую это, это ошибка, поскольку столбец неоднозначен –

+0

Как вы используете? Также разместите реальные имена таблиц и столбцов, чтобы было легко ответить. – Pavan

ответ

1

Попробуйте код ниже

Product.joins(:urls).select("products.product_id,products.retailer_id,urls.abso‌​lute_url").where(:id=>100, :urls => {:url_id=>100}) 
Смежные вопросы