-3

次のテーブルがあります...

users
id, username password email

user_clubs
id, user_id, club_name

sales
id, club_id, amount, admin_fees, dnt

user_id (たとえば 5) の admin_fees の合計を未払いとして取得しようとしており、次のことを試しました...

SELECT u.id, count(c.id), SUM(s.admin_fees) as total_admin_fees 
FROM users u
LEFT JOIN user_clubs c ON c.user_id = u.id
LEFT JOIN sales s ON s.club_id = c.id
WHERE u.id = 5
GROUP BY u.id;

最初の行の結果のみが返されますが、これは正しくありません。解決にご協力ください。

ここにテストするSQLフィドルがあります。

ありがとう

4

1 に答える 1

0

2 つのクラブ ID があり、金額が2,5であるため、合計は7user_id = 5になるはずです。

SELECT u.id, COUNT(c.id), SUM(s.admin_fees) AS total_admin_fees 
FROM users u
LEFT JOIN user_clubs c ON c.user_id = u.id
LEFT JOIN sales s ON s.club_id = c.id
WHERE u.id = 5
GROUP BY s.club_id;

すべてのユーザーに対してこれを行うことができます

SELECT u.id, COUNT(c.id), SUM(s.admin_fees) AS total_admin_fees 
FROM users u
LEFT JOIN user_clubs c ON c.user_id = u.id
LEFT JOIN sales s ON s.club_id = c.id

GROUP BY u.`id`;

フィドル

于 2013-08-28T16:06:50.533 に答える