2012-03-04 10 views
0

によっては、ここで私が働いているテーブルです:mysqlのクエリ - グループ化複合IDS

CREATE TABLE `index` (
`wid` int(7) unsigned NOT NULL, 
`pid` int(7) unsigned NOT NULL, 
`value` tinyint(3) unsigned NOT NULL DEFAULT '0', 
UNIQUE KEY `wid` (`wid`,`pid`), 
KEY `pid` (`pid`), 
KEY `value` (`value`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 

私は一緒にのみユニークである「PID」に一致するさまざまな「WID」の整数値を持っています。例えば

、私が持っている:

pid - wid - value 
1 - 5 - 7 
1 - 6 - 5 
1 - 7 - 9 
2 - 5 - 2 
2 - 8 - 4 
3 - 8 - 8 
3 - 7 - 12 
4 - 5 - 5 
.. - .. - .. 

は、今の私はWIDがVALUEの最高合計5と7の順序と一致するPIDを取得したいとしましょう。

そこでPID 1は2 WIDの(5,7)は、その和VALUE 16(7 + 9)であると一致しました。 とPID 2試合(5)の合計値2 され、PID 3は、(7)は、その合計VALUE私はSUM値でこれを実行したクエリや並べ替えを構築する必要がある12

あるWIDと一致する唯一の1 WID降順。など

SELECT 
    index.pid, SUM(index.value) TotalSum 
FROM index 
WHERE 
    index.wid = 5 or index.wid = 7 
GROUP BY UNIQUE(index.pid) 
ORDER BY TotalSum DESC 

私は、このクエリが間違っている知っているが、私は私が達成しようとしているものを表示するようにしようとしています。

答えて

0

達成しようとしているのはほぼ正しいです。

は、以下試してみてください。

SELECT index.pid, SUM(index.value) TotalSum 
FROM index 
WHERE (wid = 5 or wid = 7) //if you want only from wid 5,7 elase no need for it 
GROUP BY index.pid 
ORDER BY TotalSum DESC 
+0

をああ、私は笑SUM操作は実際には存在しないと思います。私はそれを解決するhalpedありがとう! – nick

関連する問題