2016-08-09 5 views
1

Я запрашиваю базу данных (SQL), чтобы найти системы, отправляющие запросы, чтобы посмотреть, какие различные версии окон (и другие ОС). Я проверю несколько известных вкусов, а затем попытаюсь получить уловку, но все поймать меньше, чем отдельные термины, и я не могу понять, почему.Puzzling superset в SQL

например. для этого 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 и любых других найденных версий?

Я в недоумении относительно того, как я мог бы получить эти ответы

ответ

3

Вы делаете SELECT DISTINCT.

Если в обоих первых двух запросах есть дубликаты хостов, они будут учитываться только один раз в третьем запросе. Таким образом, сумма третьего запроса будет меньше суммы первых двух.

+0

Ах! Один IP-адрес (возможно, прокси-сервер) с несколькими ОС за ним. Хорошее место. благодаря – Jon

Смежные вопросы