2017-08-29 44 views
-1

所以我有一個表的結構是這樣的...MySQL的計數集團

SAMPLES 
| id | session | category | status | localfile | 

我試圖讓匹配localfiles名單包括:

與3檔與狀態所有會話=「完成「在類別」x「」y「和」z「中

我不想爲任何沒有所有3個類別的會話結果。

所以結果應該是這樣的:

1, 100, x, complete, c:\... 
2, 100, y, complete, c:\... 
3, 100, z, complete, c:\... 
34, 106, x, complete, c:\... 
35, 106, y, complete, c:\... 
36, 106, z, complete, c:\... 

NOT:

1, 100, x, complete, c:\... 
2, 100, y, complete, c:\... 
34, 106, x, complete, c:\... 
35, 106, y, complete, c:\... 
36, 106, z, complete, c:\... 

它似乎並不像它應該是複雜的,但我不能換我的頭周圍。

回答

1

你需要找到哪些會話有

  • ('x','y','z')
  • 有狀態= complete
  • ,並擁有所有3
  • DISTINCT是萬一會話可以有反覆類可選。

SELECT * 
FROM Samples 
WHERE session IN (SELECT session 
        FROM Samples 
        WHERE category IN ('x','y','z') 
        AND status = 'complete' 
        GROUP BY session 
        HAVING COUNT(DISTINCT category) = 3) 
    -- optional if there are other categories 
    AND category IN ('x','y','z') 
+0

非常感謝。我有類似的東西,但無法完成。 –

+1

我不認爲有一種方法可以讓你知道誰低估了這個問題。不值得花時間猜測或對此抱怨。 –