您好,我有一个名为 users 和 user_details 的表,我的 user_details 表有问题。
用户表
usr_id |姓名
1 |约翰
2 |玛丽
3 |雅各布
user_details表
det_id | usr_id |看过
1 | 1 | 0
2 | 2 | 1
3 | 3 | 0
3 | 3 | 0
这是我的 SQL 查询
$sql = "SELECT *, COUNT(seen)
FROM user_details
GROUP BY usr_id
HAVING COUNT(seen)=0";
$sqlUnseen = mysqli_query($DB, $sql);
$result = mysqli_num_rows ($sqlUnseen);
echo $result;
我想获取表中未见过的登录用户数(0) 例如,我以用户 3 身份登录,则输出应为 2,因为 user_details 表中的用户 3 具有 <强>2零。
谢谢大家。
*我的输出是 1 1
最佳答案
这是应该有效的 SQL 语句。此外,在您的代码中,您只显示返回的行数,这不是您想要的。您需要 count(*) 列的值。这还会在表中显示查询的结果行:
$sql = "SELECT a.*,
COUNT(seen) as cnt
FROM users a
JOIN user_details b
ON a.usr_id = b.usr_id
WHERE a.usr_id = 3
GROUP BY a.usr_id
HAVING cnt = 0";
$sqlUnseen = mysqli_query($DB, $sql);
$allrows = mysqli_fetch_all($sqlUnseen,MYSQLI_ASSOC);
$numrows = mysqli_num_rows ($sqlUnseen);
echo "<p>Number of rows returned: ".$numrows."</p>\n";
if($allrows) {
echo "<table>\n";
echo "<tr>\n";
foreach($allrows[0] as $colname => $colval) {
echo "<td>".$colname."</td>\n";
}
echo "</tr>\n";
foreach($allrows as $recno => $row) {
echo "<tr>\n";
foreach($row as $colname => $colval) {
echo "<td>".$colval."</td>\n";
}
echo "</tr>\n";
}
echo "</table>\n";
}
关于mysql - 获取用户的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49478935/