2013-02-10 28 views
0

問題是:「列出所有官方語言與該語言的發言人數量(不是百分比),對於表格中的每個記錄,還要顯示國家名稱和大寫字母。首先按國家名稱(從A到Z)排序,然後按發言人的數量排序(從最大到最小)。「將postgresql中的三個表結合在一起

我有的表是lab2.country,lab2.city和lab2.country_language。

$query5 = "SELECT c.name AS country, c.capital,l.language,c.population,l.percentage, ((c.population * (l.percentage * 0.01)) :: bigint) AS speakers 

FROM lab2.country c INNER JOIN lab2.city ci ON (c.country_code = ci.country_code) INNER  JOIN lab2.country_language 
ON (c.country_code = l.country_code) 

^這是我需要的INNER JOIN lab2.country,lab2.city和lab2.country_language^

WHERE l.is_official is true 
ORDER BY c.name ASC, speakers DESC"; 

問題是連接三個表。第一個國家與城市,然後是國家和country_language。主鍵是country_code。

+1

作業?如果是這樣,那沒關係,如果是這樣的話,這很好解釋。 – 2013-02-10 23:47:35

+0

問題到底是什麼? – Pointy 2013-02-10 23:51:49

+0

另外,你有什麼嘗試過? – 2013-02-10 23:55:18

回答

0
"SELECT c.name AS country, ci.name AS capital, l.language, 
((c.population * (l.percentage * 0.01)) :: bigint) AS speakers 

FROM lab2.countryÇINNER JOIN lab2.country_language升 ON(c.country_code = l.country_code) JOIN lab2.city CI ON(c.country_code = ci.country_code)

WHERE l.is_official is true AND (ci.id = c.capital) 
ORDER BY c.name ASC, speakers DESC"; 

大膽是我正在尋找的答案。這是country_language的INNER JOINING國家,然後是已經INNER JOINED表的城市。謝謝!