1
我在MySQL數據庫中有2個表,主機和events
,可以加入謝謝和ID
字段。 我的查詢感興趣的特定字段是hosts
表,name
;爲events
,type
。 如果我讓他們之間的一個連接,一個例子的結果是:不同類型的Mysql計數
所以,在此圖像中,你可以看到的例子,主機阿希爾公頃4個事件:操作系統類型2,應用1時間和服務類型1。
我的問題是:使用聚合運算符,是否可以製作一個tabel,對於每個主機,我可以顯示按類型劃分的事件數量? 更speficically,所需的表可能有這樣的標題:
,在aour previuos例如,可能會返回:
| Achille | 1 | 2 | 1 |
| Aiace | 1 | 1 | 0 |
| Ulisse | 0 | 0 | 1 |
我的第一次嘗試是這個查詢:
SELECT hosts.name, count(e1.type) as Applications, count(e2.type) as OS, count(e3.type) as Type
FROM hosts JOIN events e1 ON hosts.id = e1.host_id
JOIN events e2 ON hosts.id = e2.host_id
JOIN events e3 ON hosts.id = e3.host_id
WHERE e1.type = 'Applications' AND e2.type = 'OS' AND e3.type = 'Services'
GROUP BY hosts.name;
但不起作用。
謝謝!這工作完美。但我必須承認我的無知;我們在sql中有case選項嗎?或者是PLSQL?那麼1結束指令的作用是什麼? –
'CASE'是一個sql關鍵字。 1只是一個非空值,您可以在其中寫入任何非空值。這裏,條件滿足時返回1,不滿足則返回null。計數功能只計算非空值 – GurV
@LucaSepe https://dev.mysql.com/doc/refman/5.7/en/control-flow-functions.html – CBroe