gpt4 book ai didi

php - 如何返回所有行,即使它们在连接表中没有行

转载 作者:行者123 更新时间:2023-11-29 13:26:44 26 4
gpt4 key购买 nike

我有三个表:用户、配置文件和请求。只有创建了请求的用户才会在请求表中拥有一行。但我仍然需要返回所有用户并显示每个用户的请求总数。我已经制定了下面的查询,它只返回在请求表中拥有记录的用户,尽管我需要所有用户,并且如果未找到匹配的行,则它会为用户请求返回 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 专家,所以我有点困惑。

最佳答案

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

其次改变

COUNT(*)

COUNT(recommendation_requests.user_id)

因为您使用的是 OUTER JOIN,所以每个用户的结果集中始终至少有一行,这就是 COUNT(*) 给出 的原因对于没有任何请求的用户,使用 1 而不是 0。相反,您需要计算 recommendation_requests.user_id 的值。

关于php - 如何返回所有行,即使它们在连接表中没有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20026519/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com