0

というテーブルがありますleaders。その中に、、、、、、がidあります。基本的に、最も多くの. 誰かが を入力するたびに、ペアとして誰かが 12 13を持っている可能性があるため、それが最大であり、すべてのユーザーのトップ 10 内にある場合は、その情報と対応する を取得する必要があります。私はこれを持っていると思っていましたが、実際には彼らと彼らを別の行から引っ張っています。私が持っているものは以下です。useridbmidrepsroundstsroundsrepsroundsroundsrepsrepsmax roundsmax reps

 SELECT max(l.rounds) as rounds, l.reps, m.name, l.userid 
 from leaders l 
 inner join members m on m.id = l.userid 
 where m.genre = 'male' and l.bmid  = 1 
 group by l.userid 
 order by  rounds desc,reps desc

これjoinは、membersそれらに関する情報を取得するためのテーブルです。

4

1 に答える 1

1

これを達成するにはサブクエリが必要だと思います。これを見てください:

SQL でグループごとに最初/最小/最大行を選択する方法

編集: このコードを試してください: http://sqlfiddle.com/#!2/8bb81/3

CREATE TABLE `leaders` (
  `id` int(11) AUTO_INCREMENT,
  `userid` int(11),
  `rounds` int(11),
  `reps` int(11),
  PRIMARY KEY (`id`)
);

INSERT INTO `leaders` (userid, rounds, reps) VALUES
  (1, 5, 3), (1, 7, 2), (1, 7, 1), (1, 7, 8),
  (2, 7, 6), (2, 7, 9), (2, 4, 3),
  (3, 7, 2), (3, 3, 5),
  (4, 8, 9);

SELECT
  userid,
  MAX(rounds) AS max_rounds, (
    SELECT MIN(reps)
    FROM leaders l2
    WHERE l2.userid = l1.userid AND l2.rounds <> l1.rounds
  ) AS min_reps
FROM leaders l1
GROUP BY userid
ORDER BY max_rounds DESC, min_reps ASC;
于 2012-10-07T17:51:05.503 に答える