我正在查询数据库(SQL)以查找发送请求的系统,以查看哪些是各种不同版本的Windows(和其他操作系统)。我检查一些已知的口味,然后尝试获得一个全能,但所有捕获的捕获量少于个别条款,我无法解决原因。
e.g。对于这个PHP / SQL:
$monthSelect = "SELECT DISTINCT(host) FROM $table WHERE date > ('$lastMonth') ";
$v61 = $db->query($monthSelect."AND sys LIKE '%win32_v6.1%'")->num_rows;
echo "v61: $v61<br>\n";
$v62 = $db->query($monthSelect."AND sys LIKE '%win32_v6.2%'")->num_rows;
echo "v62: $v62<br>\n";
$nWin = $db->query($monthSelect."AND sys LIKE '%win32_v%'")->num_rows;
echo "nWin: $nWin<br>\n";
我得到以下输出:
v61: 1907
v62: 2181
nWin: 4036
4036显然小于2181 + 1907。但是$nWin
不应该提供$v62
,$v61
以及其他任何版本的超集吗?
我对如何获得这些答案感到茫然
答案 0 :(得分:3)
你正在做一个SELECT DISTINCT。
如果前两个查询中都存在重复的主机,则它们将仅在第三个查询中计数一次。所以第三个查询的总和将小于前两个查询的总和。