2011-09-01 2 views
1

ユーザテーブルに200レコードがあるとします。ネストしたクエリに変数を渡す

以下のクエリは、特定ののために働くには、例えば をworker_id 2738 worker_id:

SELECT SUM(something) AS T_BOIN 
FROM (
SELECT SUM(A.boin) AS something 
FROM hall A JOIN user B ON A.who=B.id 
WHERE B.worker_id = 2738 
ORDER BY total_per_user DESC LIMIT 10 
) AS mastertbl 

私はこのような200件の別々のworker_idsのための上記のクエリを実行したい:

SELECT @TT:=BK.worker_id AS TID, 
(SELECT SUM(something) AS T_BOIN 
FROM (
    SELECT SUM(A.boin) AS something 
    FROM hall A 
    JOIN user B ON A.who=B.id 
    WHERE B.worker_id = @TT 
    ORDER BY total_per_user DESC 
    LIMIT 10) AS mastertbl 
) AS TEAM 
FROM user BK 
INNER JOIN (SELECT @TT :=0) AS WESS 
GROUP BY TID 

しかし@ ttは範囲外です。

ありがとうございます。

答えて

0
私はこれがあなたのために働くかもしれないと思う

...

SELECT worker_id, SUM(something) AS T_BOIN 
FROM (
    SELECT b.worker_id, SUM(A.boin) AS something, if(@wid = b.worker_id, @cnt:[email protected]+1, @cnt:=1 AND @wid := b.worker_id) cnt 
    FROM hall A 
    JOIN user B ON A.who=B.id 
    ORDER BY b.worker_id, total_per_user DESC 
) AS mastertbl 
WHERE mastertbl.cnt <= 10 
GROUP BY worker_id; 
+0

ありがとう、それは仕事をdoesntの:/ –

関連する問題