2015-05-17 164 views
0

這是我的查詢:MySQL查詢問題

SELECT count(*) as total, dp.name,dp.id,dp.description, dp.avatar 
    FROM `doctors` d 
    right join departments dp on d.department_id = dp.id 
    group by d.department_id 

我要表:醫生和部門。我想提取每個部門的醫生總數。這個查詢工作正常,它返回了我所有的部門,有醫生,但沒有沒有。不知何故,我想顯示所有的部門和總數,代表屬於一個部門的醫生。我怎樣才能做到這一點 ?

這是醫生表:enter image description here ,這是部門表enter image description here

+1

看看這個問題,這將解釋你有關的不同方法做連接:[鏈接](http://stackoverflow.com/questions/5706437/whats-the-difference-between-inner-join-left-join-right-join-and-full-join)。你也可以向我們展示兩個表中的數據示例嗎? –

回答

0

你可以試試這個:

SELECT 
    (SELECT count(*) FROM doctors d WHERE d.department_id = dp.id) AS total, 
    dp.* 
FROM departments AS dp 

如果你想使用JOIN那就試試這個:

SELECT 
    COUNT(d.department_id) AS total, 
    dp.* 
FROM departments AS dp 
    LEFT JOIN doctors AS d ON dp.id = d.department_id 
GROUP BY dp.id 
0
SELECT (SELECT count(*) FROM doctors AS d WHERE d.id = dp.id) as total, dp.name,dp.id,dp.description, dp.avatar 
FROM departments dp 

有ofcourse這樣做多種方式,我會做這樣的

我不認爲你需要加入你只需要一個所有的醫生的數量,你不會做任何事情的其他信息

+0

thx,但是這會使我的總列數只有1或0,但我有更多的醫生屬於一個部門。檢查我的帖子,我更新了,thx –

+0

你的查詢是正確的,除了where部分:WHERE d.department_id = dp.id,我可以用連接而不是select來選擇嗎? –

0

在我的SQL幾十年工作,我從來沒有使用正確的連接。我總是發現左連接更容易閱讀。我也嘗試按照從最高到最低級別的順序返回列,並以總和和計數結束。它讀得更好。

試試這個:

SELECT dp.id,dp.name,dp.description, dp.avatar,count(*) as total 
FROM departments dp 
    LEFT JOIN doctors d 
     on d.department_id = dp.id 
GROUP BY dp.id,dp.name,dp.description, dp.avatar 

你必須永遠站在你的SELECT子句中的每一個欄目組,除了那些聚集(如求和,計數)或恆定的。