1
表2
期望輸出
打開計數| 2
Pending | 0
已關閉| 0
等等....
我試着用下面這樣的查詢
SELECT d.status , COUNT(*) num,e.name FROM table1 d cross join table 2 e group by name;
這就造成了
任何一個可以幫助我在此。
表2
期望輸出
打開計數| 2
Pending | 0
已關閉| 0
等等....
我試着用下面這樣的查詢
SELECT d.status , COUNT(*) num,e.name FROM table1 d cross join table 2 e group by name;
這就造成了
任何一個可以幫助我在此。
您需要一個左加入。即使沒有右表中的行存在,這種類型的連接也會顯示左表中的所有行。
select t2.name, count(t1.id)
from table2 as t2
left join table1 as t1 on t2.name = t1.status
group by t2.name
注意,你需要在一列聚集來自table1
產生0
需要,因此count(t1.id)
。即使沒有來自table1
的行,count(*)
也會產生1
。
A 交叉連接正如您在查詢中所做的那樣,只是簡單地創建了所涉及的兩個表的笛卡爾乘積,從而導致左表中的每行都與右表中的每行連接一次。
上面的查詢是正確的, 2但我需要以這種方式顯示錶2中的所有名稱(打開,取消,關閉,固定,保留,打開,掛起,重新打開)並顯示(2,0,0,0,0,0,0 ,0)。 – JMR
@JMR感謝您的編輯,你完全正確,我把兩張桌子混在一起。 'table2'必須是左表,與'table1'左連接。固定。 –
它會導致(打開,取消,關閉,固定,保持,打開,掛起,重新打開)(2,1,1,1,1,1,1,1)....它在所有其他位置顯示1 .. – JMR