2016-02-14 5 views
0

Je suis faible avec la syntaxe de requête SQL et j'ai besoin de faire une requête avec php symfony2.

J'ai une table Société. Il a colonne "ville".
J'ai une table CompanyCategory. Il a des colonnes "company_id" et "category_id".
J'ai une table Catégorie. Il a la colonne "nom".

Requête SQL joignant différentes tables et comptant

J'ai besoin d'obtenir le nombre total de catégories dans toutes les villes disponibles.

Exemple:

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

J'ai regardé autour de quelques heures, mais d'autres exemples ne m'a pas aidé suffisamment, parce que je ne comprends pas encore de telles requêtes complexes.

J'ai déjà essayé de nombreux cas avant et maintenant et à chaque fois d'obtenir des exceptions différentes.

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. 

Autres cas:

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' 

Autres cas:

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' 

etc .. ne peut pas savoir comment résoudre ce problème.

Répondre

1

Son simple requête REJOIGNEZ ..

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

Vous n'êtes pas nouveau sur ce site, à l'avenir, au moins essayer de montrer quelques tentatives et les efforts que vous avez fait sur votre propre.