SELECT IFNULL(SUM(Saldo),0), Nickname, Saldocat FROM ( SELECT SUM(VarParticipaties.Bedrag) AS Saldo, Identiteiten.Kamernummer, Identiteiten.Nickname, Transactietypen.SaldoCat FROM Identiteiten JOIN Transacties LEFT JOIN Transactietypen ON ( Transacties.TransType = Transactietypen.ID ) LEFT JOIN VarParticipaties ON (Transacties.ID=VarParticipaties.Transactie AND VarParticipaties.Identiteit=Identiteiten.ID) LEFT JOIN SaldoCats ON (SaldoCats.ID=Transactietypen.SaldoCat) WHERE Kamernummer != 0 GROUP BY Nickname, SaldoCat UNION ALL SELECT FracParticipaties.Fracties * SUM( Transacties.Bedrag*-1 / ( SELECT SUM(Fracties) FROM FracParticipaties WHERE Transacties.ID = FracParticipaties.Transactie ) ) AS Saldo, Identiteiten.Kamernummer, Identiteiten.Nickname, Transactietypen.SaldoCat FROM Identiteiten JOIN Transacties LEFT JOIN Transactietypen ON ( Transacties.TransType = Transactietypen.ID ) LEFT JOIN FracParticipaties ON (Transacties.ID=FracParticipaties.Transactie AND FracParticipaties.Identiteit=Identiteiten.ID) LEFT JOIN SaldoCats ON (SaldoCats.ID=Transactietypen.SaldoCat) WHERE Kamernummer != 0 GROUP BY Nickname, SaldoCat UNION ALL SELECT Transacties.Bedrag AS Saldo, Identiteiten.Kamernummer, Identiteiten.Nickname, Transactietypen.SaldoCat FROM Transacties JOIN Identiteiten ON (Transacties.Koper = Identiteiten.ID) LEFT JOIN Transactietypen ON ( Transacties.TransType = Transactietypen.ID ) LEFT JOIN FracParticipaties ON (Transacties.ID=FracParticipaties.Transactie AND FracParticipaties.Identiteit=Identiteiten.ID) LEFT JOIN SaldoCats ON (SaldoCats.ID=Transactietypen.SaldoCat) WHERE Kamernummer != 0 ORDER BY Saldocat, Kamernummer ) AS Main GROUP BY Nickname, SaldoCat ORDER BY Saldocat, Kamernummer