現在の月のポイントだけでなく、ユーザーの合計ポイント数を取得しようとしています。ユーザーがポイントを取得すると、タイムスタンプでポイントテーブルに記録されます。合計はタイムスタンプを無視し、現在の月のポイントは正しいタイムスタンプのポイントを探します(その月の最初の日から)。これは非常に多数になるこのmysqlクエリはなぜ私にガベージ結果を与えるのですか?
SELECT user_id, user_name, sum(tpoints.point_points) as total_points, sum(mpoints.point_points) as month_points
FROM users
LEFT JOIN points tpoints
ON users.user_id = tpoints.point_userid
LEFT JOIN points mpoints
ON (users.user_id = mpoints.point_userid AND mpoints.point_date > '$this_month')
WHERE user_id = 1
GROUP BY user_id
ポイントテーブル構造
CREATE TABLE IF NOT EXISTS `points` (
`point_userid` int(11) NOT NULL,
`point_points` int(11) NOT NULL,
`point_date` int(11) NOT NULL,
KEY `point_userid` (`point_userid`),
KEY `point_date` (`point_date`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
は、クエリに一致する行の数を乗じた全てのポイントの合計に等しい厥。
サブクエリまたは複数のクエリを使用せずにこれを達成する必要があります。
を試してみてください? – sfossen
もちろん、あなたは2回参加しているので、デカルト乗算です – vartec
私はあなたがまったく参加する必要はないと思いますが、私が投稿した答えを試してみてください。 – sfossen