sql >> Databasteknik >  >> RDS >> Mysql

Varför fungerar inte den här frågan i SQLite men fungerar bra i MySQL och MSAccess?

I SQLite får du en autoinkrementerande kolumn genom att använda INTEGER PRIMÄRNYCKEL .(Och om du litar på de faktiska värdena för payers.id i frågan bör du ge dem uttryckligen.)

Du bör inte försöka kapsla sammanfogningar när det inte behövs:

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




  1. Hur automatiska uppdateringar av statistik kan påverka frågeprestanda

  2. Anslut till OpenShift (Redhat Paas) mysql-instans

  3. JDBC Välj batch-/hämtningsstorlek med MySQL

  4. C#, MySQL - ödesdigert fel påträffades under kommandoexekvering- Kontrollerade andra lösningar, något jag saknar