私は現在サッカーのウェブサイトで作業しています。私が開発している機能は、どのプレーヤーが毎年多くのゴールを決めたかを見るために歴史を経ています。ORDER BY MAX( `field_name`)GROUP BYを使用して
私は実用的な解決策を持っていますが、より簡単で効率的な方法があると思います。ここで
は、いくつかの例のデータである:
次のクエリを使用して-----------------------
year | name | goals
-----------------------
1 | player1 | 6
1 | player2 | 8
1 | player3 | 4
2 | player1 | 3
2 | player2 | 5
2 | player3 | 2
3 | player1 | 7
3 | player2 | 7
3 | player3 | 3
、私は私が必要とするデータの一部を取得することができています。
SELECT
year
、MAX(goals
)私が使用して過ごしていますように、しかしより困難証明してname
列から正しい値を取得する年
------------
year | goals
------------
1 | 8
2 | 5
3 | 7
`BY table
グループからgoals
AS year 3のようなインスタンスの場合はがgoals
の最大値に等しい場合はGROUP_CONCAT
となります。
現在、私は希望の結果を得るために2つのクエリを使用しています。私はまだ上記のクエリを使用していますが、PHP whileループを使用して毎年個別に検索しています。
は、ここに私のコードです:
$load_goals = $db->query("SELECT `year`, MAX(`goals`) AS `goals` FROM `table` GROUP BY `year` DESC);
while($goals = $load_goals->fetchObject())
{
$players = $db->prepare("SELECT `year`, GROUP_CONCAT(`name` ORDER BY `name`) AS `name`, `goals` FROM `table` WHERE `year` = :year AND `goals` = :goals");
}
私は1つにしかし無駄に2つのクエリを結合しようとしたので、ここで任意の指導をいただければ幸いです。
明確にするために、これが私の最終的な結果になるはずです。 3年目に何が起こるかをご確認ください。ここではGROUP_CONCAT
が配信されています。
------------------------------
year | name | goals
------------------------------
1 | player2 | 8
2 | player2 | 5
3 | player1,player2 | 7
見逃している二重引用符がありますか?シンタックスカラーリングはヒントを与えるはずです! – RiggsFolly
ここで明らかな構文エラーは、私がサイトに初めて入り込んだことと、コードと見積もりシステムに適応していることにまさにあります。 私の問題を解決する以下の回答が提供されています。回答いただきありがとうございます。 –