2016-02-14 51 views
0

我很弱,SQL查詢語法,我需要使用php symfony2進行一個查詢。

我有表公司。它有專欄「城市」。
我有表CompanyCategory。它有列「company_id」和「category_id」。
我有表類別。它有列「名稱」。

SQL查詢加入不同的表並計數

我需要獲得所有可用城市的類別總數。

例子:

["Riga" => 156, 
"Berlin" => 225] 

我已經看了看周圍的幾個小時,但其他的例子沒有幫助我足夠的,因爲我無法理解這種複雜的查詢呢。

我已經嘗試過很多案例,現在和每次都有不同的例外。

public function getCategoriesInCities() { 
    return $this->getEntityManager() 
     ->createQuery('SELECT c.city, count(*) as categorycount FROM AdminBundle:Company c INNER JOIN AdminBundle:CompanyCategory s') 
     ->getArrayResult(); 
} 


[Syntax Error] line 0, col -1: Error: Expected Doctrine\ORM\Query\Lexer::T_WITH, got end of string. 

其他情況:

public function getCategoriesInCities() { 
    return $asData = $this->getEntityManager() 
     ->createQuery('SELECT c.city, count(*) as categorycount FROM AdminBundle:Company c INNER JOIN AdminBundle:CompanyCategory s ON(c.id = s.company_id) GROUP BY c.city') 
     ->getArrayResult(); 
} 


[Syntax Error] line 0, col 123: Error: Expected Doctrine\ORM\Query\Lexer::T_WITH, got 'ON' 

其他情況:

public function getCategoriesInCities() { 
    return $this->createQueryBuilder('c') 
     ->select('c.city, COUNT(*) as categorycount') 
     ->innerJoin('AdminBundle:CompanyCategory ON(c.id = cc.company_id)', 'cc') 
     ->groupBy('c.city') 
     ->getQuery() 
     ->getArrayResult(); 
} 

[Syntax Error] line 0, col 138: Error: Expected Literal, got 'BY' 

等不能找出如何解決這個問題。

回答

1

它是一種簡單的連接查詢..

SELECT t.city,count(*) as categoryCount 
FROM Company t 
INNER JOIN CompanyCategory s ON(t.id = s.company_ID) 
GROUP BY t.city 

你是不是新來這個網站,所以在未來,至少儘量展現一些嘗試和你對自己做的努力。