主な回答
の外部キーはsending_fresh
、表のagent_id
に対応しています。id
agents
JOIN 条件がなく、GROUP BY 句がありません。
SELECT SUM(s.cc), a.team
FROM sending_fresh AS s
JOIN agents AS a ON a.id = s.agent_id
WHERE a.team = 'team1'
AND s.date = '2012-05-12'
GROUP BY a.team;
結合に関する情報を入手する前に、私は次のように書きました。
SELECT SUM(s.cc), a.team
FROM sending_fresh AS s
JOIN agents AS a ON a.team = s.team -- Guess at join columns!
WHERE a.team = 'team1'
AND s.date = '2012-05-12'
GROUP BY a.team;
結合条件を見逃したので、それが何であるかを推測する必要があります。代わりに、a.team_id = s.team_id
またはそのようなものである可能性があります。
結合がオンの場合、sending_fresh.team
必要に応じて結合を完全に回避できます。
SELECT SUM(cc), team
FROM sending_fresh
WHERE team = 'team1'
AND date = '2012-05-12'
GROUP BY team;
この単純化は、スキーマがより詳細に知られている現在では有効ではありません。
一般的なコメント
明示的な JOIN を使用すると、結合条件を忘れてはならないことに注意してください。FROM 句では、テーブル表記のカンマ リストを使用しないでください。古い SQL を認識するためには、それを理解する必要があります。新しい SQL では絶対に使用しないでください。代わりに明示的な結合を使用するように古い SQL をアップグレードする必要があります。
クエリに N 個のテーブルがある場合、N-1 個の結合条件が必要であることに注意してください。