може да се направи и така:
create table ads (ID bigint auto_increment NOT NULL DEFAULT'', pname char(64) NOT NULL DEFAULT'', ploc char(255) NOT NULL DEFAULT'', StartDate datetime NOT NULL DEFAULT'', EndDate datetime NOT NULL DEFAULT'', sTimes bigint NOT NULL DEFAULT'',eTimes bigint NOT NULL DEFAULT'', PRIMARY KEY(ID),key(StartDate),key(EndDate),key(sTimes),key(eTimes));
insert into ads values('','1','http://',NOW(),DATE_ADD(NOW(), INTERVAL "1" MONTH),1,100);
insert into ads values('','2','http://',NOW(),DATE_ADD(NOW(), INTERVAL "2" MONTH),101,200);
insert into ads values('','3','http://',NOW(),DATE_ADD(NOW(), INTERVAL "2" MONTH),201,400);
insert into ads values('','4','http://',NOW(),DATE_ADD(NOW(), INTERVAL "3" MONTH),401,800);
да си инициираш някакъв рандъм между 1 и 800 и да селектваш:
SELECT pname,ploc from ads where еди_какво_си between sTimes and eTimes;
това за съжаление няма да стане ако ползваш рандом-а на mysql-a, освен ако нямаш user variables ...
т.е
SELECT pname,ploc from ads where ROUND(RAND() * 800,0) between sTimes and eTimes limit 0,1
не работи особенно смислено - може да върне и Empty Set;
ползата е че можеш да си вкараш полета active, и да ползваш StartDate и EndDate за да управляваш централизирано появата на банерите.
bofh
|