[SQL] Lehet ezt egyszerűbben?

Van egy MySQL adatbázisom, benne 2 tábla: transactions, parties. Utóbbin idegen kulcs az elsőre. Pénzügyi tranzakciók. A frontend listázni akarja a tranzakciókat egyik fél (party) szempontjából: max 50 sor/lap, egyenleg oszlop, az összes választható lapot mutatni kell, index a befoglaló dátum. Erre 2 select van: egyik a lapokat, másik az aktuális lap sorait listázza.Lapok listázása:


SELECT date_start, date_end, (@balance := @balance + sum_amount) - sum_amount AS start_balance
FROM (
  SELECT MAX(date) AS date_start, MIN(date) AS date_end, SUM(amount) AS sum_amount
  FROM (
    SELECT transactions.t_date AS date
    FROM transactions
    INNER JOIN parties ON parties.transaction_id = transactions.id
    WHERE parties.account_id = 12345
    ORDER BY transactions.t_date ASC, transactions.id ASC
  ) AS all_transactions
  JOIN (SELECT @rn := 0) i
  GROUP BY FLOOR(@rn := @rn + 1 / 51)
  ORDER BY date ASC;
) AS pages
JOIN (SELECT @balance := 0) i

Aktuális lap listázása:


SELECT transactions.*
FROM transactions
INNER JOIN `parties` ON `parties`.`transaction_id` = `transactions`.`id`
WHERE parties.account_id = 12345
ORDER BY transactions.t_date ASC, transactions.id ASC
LIMIT 50 OFFSET 50

Az aktuális lap kezdőegyenlege az első lekérdezésből származó start_balance lesz, a soronkénti számítást onnan már a frontend intézi.

Most azon kattogok, hogy nem-e lehetne egyszerűbben, kevesebb subselect használatával listázni a lapokat.
SQL guruk..?

(A t_date egy DATE oszlop, nyilván nem unique.)