Mysql
 sql >> база данни >  >> RDS >> Mysql

Защо тази заявка не работи в SQLite, но работи добре в MySQL и MSAccess?

В SQLite получавате автоматично инкрементираща колона, като използвате ЦЕЛ ПЪРВИЧЕН КЛЮЧ .(И ако разчитате на действителните стойности на 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;

SQLPiddle




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. изберете двата последни реда за всеки потребител, за да получите разликата от колона (MySQL)

  2. MYSQL избира част от низ и подрежда по това парче

  3. Преброяване на несвързани стойности

  4. PHP - Грешка While/Else?

  5. Как да създадете външен ключ, който също е първичен ключ в MySQL?