2014-01-06 50 views
0

假設我有一個動物園的數據庫。在每個動物園中都有一定量的動物,例如斑馬,獅子,大象和企鵝。我有以下表格:SQL Server - 詩句的並置

  • 動物園:使用一個名稱,面積,等等
  • 動物:CHIPID(鍵),種,其中動物屬於

動物園有什麼辦法在結果顯示每個動物園中每種物種有多少種的情況下進行查詢?假設動物園在列中,物種在行中。

到目前爲止,我已經做了一個查詢動物的物種在一個動物園裏,然後我被卡住了。 這裏是我的代碼:

SELECT Species, COUNT(ID) AS "No of animals in zoo1" 
FROM view1 
WHERE Zoos.Name = 'Zoo1' 
GROUP BY Species; 
+0

一些示例數據和所需的輸出將會有所幫助。 –

+0

如果一個動物園有2針鼴,其他人都不應該有其他的,其他人都應該顯示爲零 –

+0

「詩句並置」的相關性是什麼? –

回答

1

喜歡的東西:

SELECT zoo.name, animals.species, count(*) AS number 
FROM ANIMALS 
LEFT JOIN zoos ON animals.zoo_id = zoo.id 
GROUP BY zoo.id, species 

將正常工作,給你行這樣的:

+-----------+------------+----------+ 
| name | species | number | 
+-----------+------------+----------+ 
| San Diago | Zebra | 15 | 
| San Diago | Lion  |  2 | 
| Colorado | Zebra | 10 | 

+0

'species.zoo_id'沒有在您的查詢中命名的物種 – Hogan

+0

良好的捕獲,謝謝 –

+0

ANd是否有任何方式製作一個表,其中的列是動物園的名稱,行只是動物物種? – Simon

2

這樣的事情...需要在你的數據模型的更多信息要準確。

select zoos.name, species , count(*) 
from zoos 
join animals on zoos.species = animals.species and zoos.name = animal.zoo_name 
group by zoos.name, species 

或本

select zoo.name, species , count(*) 
from zoos 
join animals on zoos.name = animal.zoo_name 
group by zoos.name, animals.species