我想选择属于某个产品的项目
。它们在 items.condition
上必须不同。这是查询:
SELECT DISTINCT ON (items.condition) items.id, items.condition, items.price, products.name
FROM products
INNER JOIN items ON products.id = items.product_id
WHERE products.id = 1
ORDER BY items.condition, items.price, products.name;
我尝试了此操作,但收到 StatementInvalid
错误。我正在使用 Rails 4。
product = Product.find(1)
product.items.select("DISTINCT ON(items.condition) items.id, products.*, items.*").order('items.condition, items.price, products.name')
错误:
PG::Error: ERROR: missing FROM-clause entry for table "products"
LINE 1: SELECT DISTINCT ON(items.condition) items.id, products.*, it...
^
: SELECT DISTINCT ON(items.condition) items.id, products.*, items.* FROM "items" WHERE "items"."product_id" = $1 ORDER BY items.condition, items.price, products.name
ActiveRecord::StatementInvalid: PG::Error: ERROR: missing FROM-clause entry for table "products"
LINE 1: SELECT DISTINCT ON(items.condition) items.id, products.*, it...
最佳答案
试试这个(未测试)
Product.joins(:items).select("DISTINCT(items.condition), items.id, products.*").order('items.condition, items.price, products.name')
关于ruby-on-rails - 如何正确将此 SQL 转换为 ActiveRecord?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17530439/