Mysql
 sql >> Base de données >  >> RDS >> Mysql

Pourquoi cette requête ne fonctionne-t-elle pas dans SQLite mais fonctionne-t-elle correctement dans MySQL et MSAccess ?

Dans SQLite, vous obtenez une colonne d'auto-incrémentation en utilisant INTEGER PRIMARY KEY .(Et si vous vous fiez aux valeurs réelles de payers.id dans la requête, vous devez les donner explicitement.)

N'essayez pas d'imbriquer des jointures lorsque cela n'est pas nécessaire :

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