通过引用另一个表格栏4

时间:2017-07-12 09:47:01

标签: mysql ruby-on-rails

我有以下表格

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)

有关详细信息,请参阅随附的屏幕截图 enter image description here

用户可以在产品部分查看所有产品。现在我必须通过引用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')

我收到了结果,但订购无效。

任何人都可以帮助我。

1 个答案:

答案 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