Materialized views in MySQL

Hej,

Eto, sem končno začel pisat tisti obljubljeni blog, nekaj postov je že na njem, pa začnimo kar s prvim.

Materialized views in MySQL

Komentarji seveda dobrodosli, na clanek seveda, komentarji na izvedbo bloga in njegov dizajn me trenutno ne zanimajo ;) Mogoce kdaj drugic v temi Recenzije spletnihi strani :P

74 odgovorov

Kako pa bi tole pravilno napisal ?

SELECT * FROM povezave
WHERE TIMEDIFF(datum_cas_prikazi, '2002-01-01 00:00:00') > 0)
ORDER BY id
DESC LIMIT 15

s tem da bi tisti datum generiral s php ... današnji datum in čas, skratka rabil bi 15 zapisov iz tabele, s tem da tistih 15 katerih datum čas je manjši od trenutnega ... druga vrstica je že tako malo čudna :S

Povej kaj bi sploh rad dosegel pa ti bomo lažje pomagali.

Sem že poštudiral kaj bi rad.

Sicer ne poznam mysql ampak moraš narediti nekaj takega:

SELECT * FROM povezave
WHERE datum_cas_prikazi < CURDATE()
ORDER BY datum_cas_prikazi DESC
LIMIT 15

Ja za datum bi načeloma šlo ...

mysql> SELECT CURDATE();
-> '1997-12-15'
mysql> SELECT CURDATE() + 0;
-> 19971215

s tem da rabim še čas, da si lepo vzamem uro časa preden grem v šolo, potem pa se vsebina cel dav, prikazuje, v smislu, vsako uro nekaj novega. :p

Edit: seveda ... še ena vrsta, pa noter čas ... p'a potem AND cas < CURTIME() samo potem, bo problem ker CURTIME velja tudi za novice od včeraj ... tako mi prikaže vse novice do tistega časa za danes in včeraj, ne pa novic za včeraj po trenutnem. Nekako bi moral vse z eno tabelo, pa primerjat datum in čas na enkrat ...

Ok pojma nimam kaj bi rad naredil. :D

HeXeR, ce bi rad vrednosti, ki jo vraca CURDATE() kaj dodal ali odvzel, uporabi funkcijo DATEADD() oziroma DATESUB().

Je pa tako, kot pravi frenky, pojma nimam, kaj bi rad dosegel :)

v bazi imam zapise ... en od podatkov v tabeli je tudi datum_cas_prikazi, sedaj pa če je datum_cas_prikazi npr:

id - datumcasprikazi
id1 - 1.1.2000 01.31.00
id2 - 8.4.2007 09.30.00
id3 - 8.5.2007 03.30.00
id4 - 8.5.2007 06.30.00
id5 - 7.5.2007 07.30.00
id6 - 7.5.2007 02.30.00
id7 - 9.5.2007 09.30.00

in če na datum 8.5.2007 ob 03.30.00 zahtevam podatke, dobim samo, id1, id2 , in id3.

SELECT * FROM `povezave` WHERE `datum_cas_prikazi` <= NOW();

verjetno zelis tole, kajne? kje je problem? razen, ce imas ti polje datum_cas_prikazi tipa text, pa notri zapisujes datume v takem formatu, kot si zapisal zgoraj... potem si pecen :)

Ja, prav tako je ... :S, čeprav imam samo 2 testna zapisa, tako da nisem pečen in lahko še spreminjam :D, v kak format pa morem dat datum ? Oz. v kakem formatu je NOW() ?

datum in uro lahko zapises v datetime, samo datum v date...