8

私は次のようなレイアウトを持っています:

Player:
PlayerID - PlayerName

Exp
ExpID - PlayerID - ExpChange

私がやろうとしているのは、すべてのプレーヤー名のExpChangeの合計を取得し、expchangeの合計で並べ替えることです。(SUM(ExpChange)をスコアとするハイスコアリスト。

これは私がこれまでに持っているものです:

SELECT Player.PlayerName, Exp.ExpChange
FROM Player
INNER JOIN Exp
ON Player.PlayerID=Exp.PlayerID
ORDER BY Exp.ExpChange;

しかし今、私はどういうわけかそのプレーヤーの交換の合計によってプレーヤーごとにそれをソートする必要があります。これは可能ですか?トンを探してみましたが、何も見つかりませんでした。ありがとう

PS私もこのようなことを試しました:

SELECT Player.PlayerName, SUM(Exp.ExpChange) AS exp
FROM Player
INNER JOIN Exp
ON Player.PlayerID=Exp.PlayerID
ORDER BY exp;

ただし、個々のプレーヤーではなく、全員のExpChangeの合計を出力するだけです。

4

2 に答える 2

11

それぞれGROUP BYのを取得するために句を追加する必要があります:sum()player

SELECT Player.PlayerName, SUM(COALESCE(Exp.ExpChange, 0)) AS exp
FROM Player
LEFT JOIN Exp
   ON Player.PlayerID=Exp.PlayerID
GROUP BY Player.PlayerName
ORDER BY exp;

expテーブル内で一致するレコードのみが必要な場合は、 INNER JOIN:を使用できます。

SELECT Player.PlayerName, SUM(Exp.ExpChange) AS exp
FROM Player
INNER JOIN Exp
   ON Player.PlayerID=Exp.PlayerID
GROUP BY Player.PlayerName
ORDER BY exp;
于 2013-01-04T20:06:09.917 に答える
0

これを試して

  SELECT P.PlayerName, SUM(Exp.ExpChange) AS exp
  FROM Player p
  INNER JOIN Exp
  ON p.PlayerID=Exp.PlayerID
  GROUP BY p.PlayerName
  ORDER BY exp;
于 2013-01-04T20:08:11.403 に答える