SQL查询连接不同的表并计算

时间:2016-02-14 14:13:30

标签: php mysql symfony

我对SQL查询语法很弱,我需要用php symfony2进行一次查询。

我有桌子公司。它有“城市”栏目 我有表CompanyCategory。它有“company_id”和“category_id”列 我有表类别。它有“名称”栏。

我需要获得所有可用城市的类别总数。

示例:

["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 个答案:

答案 0 :(得分:1)

它是一个简单的JOIN查询..

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

您不是这个网站的新手,所以在将来,至少要尝试展示您自己做的一些尝试和努力。