0

MySQL には 2 つのテーブルがあります。まずはメンバーです。2 つ目は member_experience です。member_experience テーブルには、メンバーが獲得したすべての XP の値と、それを獲得した理由が含まれています。メンバーを選択し、結果を xp の合計で並べ替えるクエリを作成したいと考えています。私が書いたクエリは結果を返しません。

CREATE TABLE IF NOT EXISTS `members` (
  `member_id` int(15) NOT NULL AUTO_INCREMENT,
  `group_id` int(15) NOT NULL,
  `display_name` テキスト NOT NULL,
  `email_address` テキスト NOT NULL,
  `password` テキスト NOT NULL,
  `status` tinyint(1) NOT NULL,
  `activation_code` varchar(16) NOT NULL,
  `date_joined` テキスト NOT NULL
  主キー (`member_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `member_experience` (
  `experience_id` int(15) NOT NULL AUTO_INCREMENT,
  `member_id` int(15) NOT NULL,
  `value` mediumint(6) NOT NULL,
  `description` テキスト NOT NULL,
  `date_earned` タイムスタンプ NOT NULL DEFAULT '0000-00-00 00:00:00',
  主キー (`experience_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

これは私の現在のクエリです:

       選択する
          m.member_id、
          xp.member_id、SUM(xp.value) AS total_xp
       FROM メンバー AS m
       LEFT JOIN member_experience AS xp ON (xp.member_id = m.member_id)
       ORDER BY total_xp";
4

2 に答える 2

0

これを試して:

SELECT
   m.member_id,
   xp.member_id, SUM(xp.value) AS total_xp
FROM 
   members AS m
LEFT JOIN 
   member_experience AS xp ON xp.member_id = m.member_id
GROUP BY 
   m.member_id
ORDER BY 
   SUM(xp.value)
于 2013-08-28T07:22:57.920 に答える
0

これは次のことを行います:

SELECT
  members.member_id,
  total_xp.sum_xp
FROM
  members
   LEFT JOIN
     (SELECT 
       member_id, 
       SUM(value) AS sum_xp 
     FROM 
       member_experience 
     GROUP BY 
       member_id) AS total_xp
     ON members.member_id = total_xp.member_id
ORDER BY
  total_xp.sum_xp
于 2013-08-28T07:17:29.960 に答える