Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Warum funktioniert diese Abfrage nicht in SQLite, aber in MySQL und MSAccess?

In SQLite erhalten Sie eine automatisch inkrementierende Spalte, indem Sie INTEGER PRIMARY KEY verwenden .(Und wenn Sie sich auf die tatsächlichen Werte von payers.id verlassen in der Abfrage sollten Sie diese explizit angeben.)

Sie sollten nicht versuchen, Joins zu verschachteln, wenn dies nicht erforderlich ist:

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;

SQLFiddle