SQLite में, आपको INTEGER PRIMARY KEY
का उपयोग करके एक ऑटोइनक्रिमेंटिंग कॉलम मिलता है। .(और यदि आप payers.id
. के वास्तविक मूल्यों पर भरोसा करते हैं प्रश्न में, आपको उन्हें स्पष्ट रूप से देना चाहिए।)
जब जरूरत न हो तो आपको नेस्ट जॉइन करने की कोशिश नहीं करनी चाहिए:
SELECT payer_payment.payer_id,
Sum(payer_payment.amount) AS total_paid,
Sum(payer_payment.pays * payments_share.single_share) AS fair_share
FROM payers
INNER JOIN payer_payment
ON payers.id = payer_payment.payer_id
INNER JOIN (SELECT payment_id,
Sum(amount) / Sum(pays) AS single_share
FROM payer_payment
GROUP BY payment_id) AS payments_share
ON payer_payment.payment_id = payments_share.payment_id
WHERE payers.user_id = 1
GROUP BY payer_payment.payer_id;