我有一些购买,它们可能(也可能没有)有一个关联的子购买,我用一个自连接将其建模为:
class Purchase < ApplicationRecord
has_one :sub_purchase, class_name: 'Purchase', dependent: :destroy
belongs_to :main_purchase, class_name: 'Purchase', foreign_key: 'purchase_id', optional: true
end
购买具有属性状态,其可以是“活动”。主采购处于活动状态时,如何查询子采购?
或许是和这个差不多的?:
Purchase.where.not(purchase_id:nil).where(main_purchase: {status: 'active'})
UPDATE:在SQL中,我发现我可以给purchases表设置两次别名,并执行如下操作:
SELECT
FROM
purchases p1 INNER JOIN purchases p2 ON p2.id = p1.purchase_id
WHERE p2.status='active';
但如果可以避免的话,最好不要直接使用SQL。
1条答案
按热度按时间xzv2uavs1#
但实际上并没有尝试: