选择属于类别的数据

时间:2013-07-01 18:27:07

标签: sql dql

我有三张这样的表:

播放器: id,name

matchevent : id,player_id,eventcategory_id,description

eventcategory : id,name

关系是: player:matchevent - 1:N matchevent:eventcategory - N:1

在桌面播放器中,我有足球运动员的名字和在eventcategory事件中,如黄牌,替换等。在表matchevent中,我存储属于某个类别的玩家事件。

现在我想要检索所有玩家都有的COUNT个事件。例如:

  • 第一位玩家有COUNT个黄牌0,替换0和进球0
  • 第二名球员有1张黄牌,0张替换和2张进球
  • 第三名球员有0张黄牌,0张替换0球

我如何在DQL中执行此操作?我试过LEFT JOIN和IN,但它没有用。它只选择有事件的玩家,而不是所有玩家。

->createQuery('SELECT p, i
               FROM MyBundle:player p 
               LEFT JOIN p.matchevent i
               WHERE i.eventcategory IN (:eventcategory)
               ORDER BY p.player ASC
               ')
->setParameters(array(
               'eventcategory' => $eventcategory,
))

1 个答案:

答案 0 :(得分:0)

使用正确的联接,即使他们没有活动,也应该强制它返回所有玩家。

'SELECT p, i
       FROM MyBundle:player p 
       RIGHT JOIN p.matchevent i
       WHERE i.eventcategory IN (:eventcategory)
       ORDER BY p.player ASC
       ')