|
|
|
| Есть таблица log_vh с полями id, time, ip
И есть таблица ip_arh с полями id, dat_arh, ip
Нужно найти в таблице log_vh все уникальные значения ip, для которых
Другим условием выборки является тот факт, что в таблице ip_arh в диапазоне
dat_arh > '$vher_dat' AND dat_arh < '$dat_arh
| не должно быть таких же значений ip.
С LEFT JOIN конструкция вообще не получилась, и ничего не выдает этот код:
$res = mysql_query("SELECT DISTINCT log_vh.ip
FROM log_vh, ip_arh
WHERE log_vh.ip != ip_arh.ip
AND log_vh.time >= '$seg_sec'
AND ip_arh.dat_arh > '$vher_dat'
AND ip_arh.dat_arh < '$dat_arh ' ");
while($row = mysql_fetch_assoc($res)) echo "<br> ", $row['ip'];
|
| |
|
|
|
|
|
|
|
для: Владимир55
(02.03.2009 в 22:55)
| |
$sql = "
SELECT DISTINCT ip FROM log_vh
WHERE time >= '$seg_sec' AND ip NOT IN (
SELECT ip FROM ip_arh
WHERE dat_arh > '$vher_dat' AND dat_arh < '$dat_arh'
) ";
|
Можно и с LEFT JOIN вариант написать, но сомневаюсь, что он будет оптимальнее... хотя...
$sql = "
SELECT DISTINCT l.ip
FROM log_vh l
LEFT JOIN ip_arh a
ON l.ip = a.ip AND a.dat_arh > '$vher_dat' AND a.dat_arh < '$dat_arh'
WHERE l.time >= '$seg_sec' AND a.ip IS NULL
";
|
Интересно сравнить, что быстрее, и сильно ли. | |
|
|
|
|
|
|
|
для: Trianon
(03.03.2009 в 01:29)
| | Корректировка сообщения | |
|
|
|
|
|
|
|
для: Владимир55
(03.03.2009 в 14:33)
| | К сожалению, вылетает 504 Gateway Time-out...
При том, что сейчас всего лишь середина дня и к вечеру посетителей будет еще больше, так что ресурсоемкость еще возрастет.
Получается, что от этой функции подсчета уникальных новых посетителей, осуществить которую я пытался двумя разными способами, придется отказаться вследствие ее чрезвычайно высокой ресурсоемкости.
А созданный Вами код мне ОЧЕНЬ понравился и взял его на вооружения как образец построения запросов такого типа.
Спасибо! | |
|
|
|