Как написать SQL-запрос через Active Record Query Interface с объединением двух таблиц, где условие - массив идентификаторов - PullRequest
1 голос
/ 23 сентября 2019

Это чистый ActiveRecord без моделей Rails, просто подключение к другой базе данных mysql.Я попытался написать запрос следующим образом:

Product.joins('inner join oc_product_description on oc_product_description.product_id = oc_product.product_id').where('product_id = ?',[64,66,70,71])

и получил ошибку ActiveRecord::StatementInvalid (Mysql2::Error: Column 'product_id' in where clause is ambiguous)

, когда я добавляю уникальное имя таблицы, подобное этому .where('oc_product.product_id = ?',[64,66,70,71])

Я получил еще одну ошибку ActiveRecord::StatementInvalid (Mysql2::Error: Operand should contain 1 column(s))

Ответы [ 2 ]

0 голосов
/ 23 сентября 2019

Используйте IN для нескольких значений (массив):

Product.joins('inner join oc_product_description on oc_product_description.product_id = oc_product.product_id')
       .where('oc_product.product_id IN (?)',[64,66,70,71])
0 голосов
/ 23 сентября 2019

= используется для поиска одного значения.Если вы хотите использовать массив, синтаксис sql:

.where('oc_product.product_id IN ?',[64,66,70,71])

Не уверен, как работает ActiveRecord, но вы можете попробовать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...