grey109
Новичок
Помогите найти ошибку в запросе с JOIN LEFT
Задача: есть список урлов, нужно по ним кликать через прокси раз, например, в 24 часа. После того как прокси использован для одного урла он станивится неактивным на какое-то время, в тоже время для другого урла он активный. Для того, чтобы получить список активных прокси есть 3 условия:
1. прокси еще не использовался
2. прокси использовался для данного урла более чем 24 часа назад
3. прокси использовался для другого урла не важно когда
У меня есть этого есть 3 таблицы:
create table proxy (
id_proxy int(8) not null auto_increment primary key,
proxy text not null
);
create table url (
id_url int(8) not null auto_increment primary key,
url text not null
;
create table stat (
id_stat int(8) not null auto_increment primary key,
id_url int(8) not null,
time datetime not null,
id_proxy int(8) not null
);
Я над запросом бьюсь уже несколько дней. Вот мой вариант, который работает не совсем правильно:
SELECT proxy.id_proxy, proxy.proxy FROM proxy LEFT JOIN stat ON proxy.id_proxy=stat.id_proxy
LEFT JOIN url ON stat.id_url=url.id_url WHERE
(
stat.id_proxy IS NULL // условие №1
OR
((UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(stat.time)-(24*60*60))>0) and proxy.id_proxy=stat.id_proxy and stat.id_url='1' // условие №2
OR
(proxy.id_proxy=stat.id_proxy and stat.id_url!='1') // условие №3, вот внем кажется и ошибка
)
Помогите, плз, найти ошибку.
Задача: есть список урлов, нужно по ним кликать через прокси раз, например, в 24 часа. После того как прокси использован для одного урла он станивится неактивным на какое-то время, в тоже время для другого урла он активный. Для того, чтобы получить список активных прокси есть 3 условия:
1. прокси еще не использовался
2. прокси использовался для данного урла более чем 24 часа назад
3. прокси использовался для другого урла не важно когда
У меня есть этого есть 3 таблицы:
create table proxy (
id_proxy int(8) not null auto_increment primary key,
proxy text not null
);
create table url (
id_url int(8) not null auto_increment primary key,
url text not null
;
create table stat (
id_stat int(8) not null auto_increment primary key,
id_url int(8) not null,
time datetime not null,
id_proxy int(8) not null
);
Я над запросом бьюсь уже несколько дней. Вот мой вариант, который работает не совсем правильно:
SELECT proxy.id_proxy, proxy.proxy FROM proxy LEFT JOIN stat ON proxy.id_proxy=stat.id_proxy
LEFT JOIN url ON stat.id_url=url.id_url WHERE
(
stat.id_proxy IS NULL // условие №1
OR
((UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(stat.time)-(24*60*60))>0) and proxy.id_proxy=stat.id_proxy and stat.id_url='1' // условие №2
OR
(proxy.id_proxy=stat.id_proxy and stat.id_url!='1') // условие №3, вот внем кажется и ошибка
)
Помогите, плз, найти ошибку.