我有评级的用户,我想显示每个用户的评级总额。我有两个表:用户和反馈。我在users表中有4个用户。在反馈表(包括申请者id和应用体验栏)中,我有每个用户的评分。但是,我对每个人都有不同的评价。
$sql4 = "
SELECT SUM(app_experience) as app_experience
, applicant_id
FROM feedback f
JOIN users u
ON u.id=f.applicant_id
GROUP
BY feedback.applicant_id
";
$res4 = mysqli_query($db,$sql4) or die(mysqli_error($db));
这是我的输出,但它只打印2个用户,因为在表feedback中,有2个用户还没有任何反馈:
foreach ($res4 as $row)
{
echo "".$row['applicant_id']."----".$row['app_experience']."";
echo "<br>";
}
我的问题是如何输出所有4个用户,我想显示每个用户旁边的评分总数。
我正在做这样的事情,但是我不知道在下面的代码中在哪里添加上面的foreach循环。你有什么想法吗
$sql2 = "SELECT * FROM users";
$res2 = mysqli_query($db,$sql2) or die(mysqli_error($db));
while($row2 = mysqli_fetch_assoc($res2))
{
$id = $row2['id'];
$name = $row2['name'];
}
3条答案
按热度按时间ldioqlga1#
在短sql中选择所有用户及其反馈
i7uaboj42#
您只需修改以下语句:
收件人:
这个
users LEFT JOIN feedback ...
子句将允许查询返回一行,即使对于还没有反馈的用户也是如此。这个
COALESCE(SUM(app_experience), 0)
将评估为0
当用户还没有反馈时。使用此解决方案,您不需要循环。
zpgglvta3#
如前所述,您的查询将不会运行。这个
GROUP BY
子句正在引用feedback
,但该引用已更改为f
化名。你似乎想要一个
LEFT JOIN
:这将返回一个
NULL
的值app_experience
. 如果您想要一个值(例如0
)使用COALESCE(SUM(f.app_experience), 0)
.