我有以下表格
users (id, name, email, pricing_plan_id)
products (id, name, desc, slug)
pricing_plans (id, name, desc)
tagged_products (id, product_id, pricing_plan_id)
用户可以在产品部分查看所有产品。现在我必须通过引用tagged_products表对产品进行排序。
假设user1的pricing_plan_id = 1,那么他可以先看到在给定的pricing_plan_id下标记的产品,然后是剩余的产品。
例如,user1可以按以下顺序查看产品 [P3,P1,P2,P4,P5,P6,P7]
我尝试了以下查询,但没有运气
Product.joins("LEFT JOIN tagged_products AS tp ON tp.products_id=products.id AND tp.pricing_plan_id=#{user.id}").order('tp.product_id desc')
我收到了结果,但订购无效。
任何人都可以帮助我。
答案 0 :(得分:0)
如果您更新查询并使用此代码,该怎么办:
Product.joins("LEFT JOIN tagged_products AS tp ON tp.products_id=products.id AND tp.pricing_plan_id=#{user.id}").order('tp.products_id desc')
.order('tp.product_id desc') - > .order('tp.product s _id desc')
根据您的数据,此SQL查询应该执行此操作:
SELECT * from `products` LEFT JOIN tagged_products AS tp ON tp.product_id=products.id AND tp.pricing_plan_id=1 ORDER BY product_id desc
这是sql小提琴链接:http://sqlfiddle.com/#!9/6a282/4