所以我試圖得到兩個獨立的值。已完成所有付款的發票和已完成付款的發票。 這是一個Rails應用程序,以便postgresql部分和全部
Invoices has_many :payments
付款要麼支付:true或支付:假的。 因此,在我第一次打電話時,我想要獲得所有付款的發票的發票編號。我已經試過:
SELECT DISTINCT (invoices.id) FROM "invoices" join payments on payments.invoice_id = invoices.id WHERE "invoices"."payer_id" = 1 AND (payments.paid = ALL(array[true]))
不幸的返回一行發票即使2出3支付:真正
下一次調用是讓其中一些被支付的發票:真實的,有些是支付:假的。爲此,我已經試過:
SELECT DISTINCT (invoices.id) FROM "invoices" join payments on payments.invoice_id = invoices.id WHERE "invoices"."payer_id" = 1 AND (payments.paid = SOME(array[true]) AND payments.paid = SOME(array[false]))
但這不會返回即使一些從該發票付款的支付行,而有些則沒有。
我是否正確使用ALL和SOME?還是有另一種方式來打這個電話?看起來像一個相當直接的電話,所以我相信有一些方法可以做到這一點。謝謝大家幫助!
啊完美,謝謝我沒想到有。從MySql切換到PG,我覺得很困難。愚蠢的英雄。 –