Php 如何返回所有行,即使它们没有';在联接表中没有行

Php 如何返回所有行,即使它们没有';在联接表中没有行,php,mysql,database,zend-framework,zend-db-table,Php,Mysql,Database,Zend Framework,Zend Db Table,我有三个表、用户、配置文件和请求。只有创建了请求的用户才会在请求表中有一行。但我仍然需要让所有用户返回并显示每个用户的请求总数。我已经完成了下面的查询,它只返回在requests表中有记录的用户,尽管我需要所有用户,如果没有找到匹配的行,它将为用户请求返回0 public function getAllUsers() { $select = $this->userRepository->select(); $select->setInt

我有三个表、用户、配置文件和请求。只有创建了请求的用户才会在请求表中有一行。但我仍然需要让所有用户返回并显示每个用户的请求总数。我已经完成了下面的查询,它只返回在requests表中有记录的用户,尽管我需要所有用户,如果没有找到匹配的行,它将为用户请求返回0

 public function getAllUsers()
    {
        $select = $this->userRepository->select();
        $select->setIntegrityCheck(false)
               ->from('users', array('id', 'username', 'date_created', 'active', 'last_login', 'role'))
               ->join('profiles', 'users.id = profiles.user_id', array('profile_id' => 'id', 'first_name', 'last_name', 'email', 'avatar', 'on_mailing_list'))
               ->join('recommendation_requests', 'users.id = recommendation_requests.user_id', array('requests' => 'count(*)'))
               ->order('users.date_created ASC');
        return $this->userRepository->getAdapter()->fetchAll($select);
    }

我需要更改什么,以便它返回所有用户,即使他们没有任何请求,并为请求列返回0,而不是请求总数。我试过joinLeft、joinRight、joinInner……我不是SQL高手,所以我有点困惑。

首先列出所有用户使用的
外部连接
,例如
左连接

其次改变

COUNT(*)


由于您使用的是
外部联接
,因此每个用户的结果集中始终至少有一行,
COUNT(*)
为没有任何请求的用户提供
1而不是
0
。相反,您需要计算
推荐请求的值。用户id

使用
外部连接
,例如
左连接
。请参阅“谢谢”,它对没有任何请求的用户返回1,而不是0。有什么想法吗?
COUNT(recommendation_requests.user_id)