我有一個Postgres表,其中用戶可以有多個付款訂閱,付款訂閱可以是活動的或非活動的,這通過支付訂閱表上的activated_at和inactivated_at日期字段來顯示。我現在想找到沒有活動付款訂閱的所有用戶。獨家加盟有很多關係
找到所有的用戶,無需任何付款訂閱是很容易的
User.joins("LEFT JOIN payment_subscriptions ON (payment_subscriptions.user_id = users.id)").where("payment_subscriptions.id IS NULL")
我也想找到所有誰只有不活動的訂閱用戶。如果我使用與上述相同的模式,我會找到所有在某個時間點已停用其訂閱的用戶,但不能保證他們也沒有活動訂閱。
User.joins("LEFT JOIN payment_subscriptions ON (payment_subscriptions.user_id = users.id)").where("payment_subscriptions.inactivated_at IS NOT NULL")
如何從我的表中獲取沒有訂閱或沒有活動訂閱的用戶?
這實際上會給我所有的用戶誰沒有訂閱或在某個點上已經停用訂閱。由於用戶可以有多個訂閱,所以他們很可能擁有活動訂閱以及不活動的訂閱。 –