mysql
  • max
  • 2011-09-16 3 views 0 likes 
    0

    私のコードは数のMAX値が

    $query = "SELECT teamID, season, 
        MAX(season) AS current_season, 
        COUNT(DISTINCT matchID AND season=current_season) AS season_games_played, 
        FROM finances 
        WHERE teamID = '$_SESSION[teamID]'"; 
    

    であるが、これは私にエラーを与える:(

    私がやろうとしています何を見つけることが、チームがこれをプレイしたゲームの量を得ることです季節のため、current_seasonは列シーズンのMAX値になります。

    次のコード行は、チームが昨シーズン(MAX(シーズン)-1)に行ったゲームの数を調べることです。書かれているか?

    +1

    season_games_playedの後にコンマを削除し、それを試してみてください。 どのようなエラーが表示されますか? –

    答えて

    1

    これを行う最も簡単な方法は、おそらくあなたはすでにので、すでに知っているであること渡しているように私はSELECTリストからteamIDを削除した

    SELECT 
        season, 
         COUNT(DISTINCT matchID) AS season_games_played 
        FROM finances 
        WHERE teamID = '$_SESSION[teamID]' /*<-- Probable SQL injection risk!*/ 
        GROUP BY season 
        ORDER BY season DESC 
        LIMIT 2; 
    

    だろう。

    '$_SESSION[teamID]'はPHPなどです。その言語でSQLインジェクションを避ける方法をお読みください。

    +1

    +1 20秒速く:) – Bohemian

    +0

    返信いただきありがとうございます。 SQLインジェクションを読んだことがありますが、そこで実行できるチャンスはありません。コンピュータで生成された数値です。 –

    1
    SELECT 
        teamID, 
        season, 
        COUNT(DISTINCT matchID) AS season_games_played, 
    FROM finances 
    WHERE teamID = ? 
    GROUP BY 1, 2 
    ORDER BY 2 DESC; 
    

    最初の行は、最新のシーズンとなり、2行目は、第二、最新のシーズンになるなど

    関連する問題