2017-12-13 13 views
1

57と61は、私は2番目のSQLコマンドは、私がここに入れているものを好きではないを選択するには、最初のの返された行を使用したい戻ります例えば最初SELECT(手動57と61)。最後に合計を計算してください。あなたはすべて1でこれを行うことができますカウントネストされたSELECT結果とサムアップSQL

1. SELECT id FROM permissions WHERE title = 'samplezip' 
2. SELECT count(id) FROM accesslogs WHERE urlid=57 AND status='d' //result 7 
3. SELECT count(id) FROM accesslogs WHERE urlid=61 AND status='d' //result 2 

答えて

1

使用IN

SELECT count(*) 
FROM accesslogs 
WHERE status = 'd' 
    AND urlid IN (SELECT id FROM permissions WHERE title = 'samplezip'); 

をIDに加えあたりの結果の行について総使用量GROUP BY WITH ROLLUP

SELECT urlid, count(*) 
FROM accesslogs 
WHERE status = 'd' 
    AND urlid IN (SELECT id FROM permissions WHERE title = 'samplezip') 
GROUP BY urlid WITH ROLLUP; 
2

(9コースの結果ですが)私は思う:

select 
    count(l.id) 
from 
    permissions as p 
    inner join accesslogs as l 
     on p.id = l.urlid 
where 
    p.title = 'samplezip' 
    and status ='d' 
+1

これで2行になりました。計算された合計ではない!それ以前のグループは正しかった。 –

+0

@MessiMeysam私はgordatronの答えで行われた変更をロールバックしました。選択部分から 'p.title、p.id'を無視するだけで、これらの値は確定的な順序で返されます –

関連する問題