2016-06-21 54 views
0

我會對數據庫子查詢SQL語句顯示分組,計數,把它放在了

No | Nomor ID | Name | chairman (if as chairman id=1, if not = 0) 
1 | 1234  | Brian | 1 
2 | 1234  | Dol | 0 
3 | 5555  | Mon | 0 
4 | 5555  | Tue | 1 
5 | 5555  | Nom | 0 

我想,與

Nomor ID | Name | Chairman | count 
1234  | Brian |  1 | 2 
5555  | Tue |  1 | 3 

我嘗試任何可能顯示它一個表..但不能以顯示「姓名」穿上它就像

願你知道解決方案

+1

我認爲你可以解決一些這個自己 – Strawberry

+0

,但我不能仍然解決..我還是儘量.. – TARA

回答

1

試試這個..

SELECT 
    t1.`Nomor ID`, 
    t1.Name, 
    t1.chairman, 
    t2.count 
FROM 
    `mytable` t1 
    INNER JOIN 
    (SELECT 
     `Nomor ID`, 
     COUNT(`No`) AS `count` 
    FROM 
     `mytable` 
    GROUP BY `Nomor ID`) t2 
    ON t1.`Nomor ID` = t2.`Nomor ID` 
WHERE t1.chairman = '1' 

檢查FIDDLE

+0

等待。 。@mohammed – TARA

+0

其工作..非常感謝你@mohammed shafeek – TARA

+0

這與我的回答有什麼不同? – hjpotter92

0

像這樣的事情會工作。 GROUP BY是你的朋友:

SELECT 
    `Nomor ID` 
    , SUBSTRING_INDEX(GROUP_CONCAT(`Name`), ',', 1) AS `Name` 
    , IF(`chairman` = 1,1,0) AS `chairman`, 
    count(*) AS `count` 
FROM yourTable 
GROUP BY `Nomor ID`; 
+0

我是嘗試..但是..名字仍然顯示「Nom」。 – TARA

+0

@tara - 我已經改變了我的答案,對不起 –

+0

okee bernd buffen ..我嘗試 – TARA

1
SELECT 
    `Nomor ID`, 
    `Name`, 
    `Chairman`, 
    t2.totalcount AS 'count' 
FROM tblName t1 
INNER JOIN (
    SELECT 
     COUNT(1) AS totalcount, 
     `Nomor ID` 
    FROM tblName 
    GROUP BY `Nomor ID` 
) t2 
    ON t2.`Nomor ID` = t1.`Nomor ID` 
WHERE t1.chairman = 1 

上面的查詢應正常工作。

+0

我只有一張桌子.. – TARA

+0

@tara所以這個 – Strawberry

+0

它使用內部連接,我只有一張桌子..所以它不能.. @Strawberry – TARA

0
SELECT table1.`Nomor ID`,t.Name,sum(case when chairman=1 then 1 else 0 end) as chairman,count(`No`) as Cnt from table1 join (select `Nomor ID`,Name from table1 where chairman=1 ) t on t.`Nomor ID`=table1.`Nomor ID` group by `Nomor ID` 

上面的查詢會按照您的預期給出。

+0

非常感謝你@phaneendra – TARA