![](/img/trans.png)
[英]How can I get Total count of parts,count of passed parts and count of failed parts in a single query
[英]How can I get a total count of items?
我試圖找出一個 MYSQL 字符串,我的菜鳥妨礙了我。 我正在嘗試計算每個階段的團隊總數。
要考慮的表格:
phases
+----+------------+
| id | phase_name |
+----+------------+
| 1 | start |
| 2 | middle |
| 3 | end |
| 4 | finish |
+----+------------+
teams
+----+-----------+----------+
| id | team_name | phase_id |
+----+-----------+----------+
| 1 | team1 | 2 |
| 2 | team2 | 3 |
| 3 | team3 | 3 |
| 4 | team4 | 4 |
| 4 | team5 | 3 |
+----+-----------+----------+
Desired result
+----------+------------+-----------+
| phase_id | phase_name | tot_teams |
+----------+------------+-----------+
| 1 | start | NULL |
| 2 | middle | 1 |
| 3 | end | 3 |
| 4 | finish | 1 |
+----------+------------+-----------+
我試過了:
SELECT
T.phase_id, P.phase_name, COUNT(*) AS tot_teams
FROM
teams T
LEFT JOIN
phases P ON P.id = T.phase_id
GROUP BY
phase_id;
但這僅顯示受影響的phase_id ......我希望在表格中獲得所有phase_id。 我也試過:
SELECT
P.phase_name, T.phase_id, COUNT(*)
FROM
teams T
RIGHT JOIN
phases P on P.`id` = T.`phase_id`
GROUP BY
P.id
但這顯示無效數據。 (例如,phase_id 的數量為 1,但未顯示在團隊表中。
你能為我指出正確的方向嗎?
謝謝!
RIGHT JOIN
是正確的,但您需要使用COUNT(T.phase_id)
而不是COUNT(*)
。 否則,您將計算包含為沒有團隊的階段生成的NULL
的行。
大多數人更喜歡使用LEFT JOIN
,將主表放在首位。
SELECT P.phase_name, P.phase_name, COUNT(T.phase_id)
FROM phase AS P
LEFT JOIN teams AS T ON P.id = T.phase_id
GROUP BY P.id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.