See if below gives some guidelines :
The sub-queries :
1)
gp
Code:
SELECT
paymemberid,
SUM(payamount) AS TheGPsumpay
FROM
payments
GROUP BY
paymemberid;
2)
cp
Code:
SELECT
m.groupid,
Sum(b.payamount) AS TheCPsumpay
FROM
payments AS b
INNER JOIN
members AS m
ON
b.paymemberid = m.memberid
WHERE
(((m.groupid) Is Not Null))
GROUP BY
m.groupid;
3)
gb
Code:
SELECT
billmemberid,
SUM(billamount) AS TheGBsum_bills
FROM
bill
GROUP BY
billmemberid;
4)
cb
Code:
SELECT
m.groupid,
Sum(b.billamount) AS TheCBsum_bills
FROM
bill AS b
INNER JOIN
members AS m
ON b.billmemberid = m.memberid
WHERE
(((m.groupid) Is Not Null))
GROUP BY
m.groupid;
__________________________________________________ _______________________
The final query :
Code:
SELECT
members.memberID,
members.lastName,
members.firstName,
[lastName] & " " & [firstName] AS TheName,
members.fatherName,
memberType.typeDescription,
members.tel,
members.groupID,
Nz([TheGPsumpay],0) AS TheGPSumPays,
Nz([TheCPsumpay],0) AS TheCPSumPays,
Nz([TheGBsum_bills],0) AS TheGBSumBills,
Nz([TheCBsum_bills],0) AS TheCBSumBills,
([TheGBSumBills]+[TheCBSumBills])-([TheGPSumPays]+[TheCPSumPays]) AS TotalDues
FROM
(
(
(
(
members
LEFT JOIN
memberType
ON
members.memberType = memberType.typeID
)
LEFT JOIN
gp
ON
members.memberID = gp.paymemberid
)
LEFT JOIN
cp
ON
members.memberID = cp.groupid
)
LEFT JOIN
gb
ON
members.memberID = gb.billmemberid
)
LEFT JOIN
cb
ON
members.memberID = cb.groupid;
Thanks