正常に機能するこのクエリがあります。manager_details と users の 2 つのテーブルからデータを取得します。私が必要としているのは、マネージャーの合計スコアBUT を週 1 から週 7に持ち込むことです。週は、manager_details テーブルの別のフィールドで、0 ~ x の値を持つ可能性があります。
SELECT
SUM(mng.score) AS accumulated_score,
mng.manager_id AS manager_id,
users.id,
users.fname,
users.lname
FROM manager_details AS mng
JOIN users
ON users.id = mng.manager_id
GROUP BY manager_id
ORDER BY accumulated_score DESC
LIMIT 5
1週目から7週目までのスコアを取得するために、追加しようとしました
SELECT
SUM(mng.score) AS accumulated_score,
mng.manager_id AS manager_id,
users.id,
users.fname,
users.lname
FROM manager_details AS mng
WHERE mng.week >= 1 AND mng.week <= 6 -- this line
JOIN users
ON users.id = mng.manager_id
GROUP BY manager_id
ORDER BY accumulated_score DESC
LIMIT 5
そしてこれを手に入れた
エラー コード : 1064 SQL 構文にエラーがあります。near 'join users on users.id = mng.manager_id GROUP BY manager_id を使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。
そしてまた試した
...
HAVING mng.week >= 1 AND mng.week <= 6 -- <--
...
また、GROUP BY の後、GROUP BY の前、最後に HAVING クラスを配置しましたが、動作しませんでした。mysql エラー チェック構文が取得されました。
私は何か間違ったことをしていますが、それが何であるかわかりません。
では、mng.score をフィルター処理して 1 ~ 7 週の間にあるスコアのみを取得するには、どの句を使用し、その条件をどこに配置すればよいでしょうか?