Jo, a stranku obvykle dobry programator kesuje do souboru pri editaci. Uzivatel uz si prohlizi staticky soubor, ktery uz ani nejde pres php. Pripadne se to necha jako php, ale kesovani ma zaply server a ten treba uzivateli 15 min bude posilat stale stejnou strenku, ikdyz jsi ji mezitim zmenil.
Příspěvky odeslané z IP adresy 2001:718:2601:258:2088:65...–
MS access umi otevrit excel tabulku jako databazi a pak to exportovat, pripadne nad tim pouzivat dotazy. xls a csv se daji stahnout treba ze statistickeho uradu nebo jinych webu, treba gps poloha mes, psc cisla a ulice z posty a pod. Ale jednodussi to bude naplnit programove pomoci lorem isum.
Obvykle jednoduchy dotaz se provede rychleji nez slozity, kdyz ma spravne napsane podminky WHERE nez slozitejsi. UNION by asi nemel byt problem. Nebal bych se pouzit i dva nezavisle dotazy. Na jakpsatweb v diskuzi jsem videl tusim, ze to nekdo testoval, mozna i zname portaly jako root, zive, interval, vrana. Stav byl takovy, ze vysledek byl tak asi stejny. Jen v nekterych db byl rychlejsi slozitejsi dotaz, ale u nich zas dost krachoval casove jednodussi proti jinym db. jakoze treba
db1 dotaz1 10s
db1 dotaz2 32s
db2 dotaz1 15s
db2 dotaz2 13s
Napis z toho program, dej link na kod (asi jako txt soubor) v poznamce mej i create table a pak se da bavit o necem konkretnim, co si muzu u sebe spustit, vytvorit tabulky v db...
Takeshi
http://peter-mlich.wz.cz/…_priklad.txt
CREATE TABLE `user` (
`iduser` int(10) unsigned NOT NULL auto_increment,
`name` varchar(40) default NULL,
PRIMARY KEY (`iduser`),
INDEX `name` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
CREATE TABLE `book` (
`idbook` int(10) unsigned NOT NULL auto_increment,
`name` int(10) unsigned default NULL,
PRIMARY KEY (`idbook`),
INDEX `iduser` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
CREATE TABLE `owned` (
`idowned` int(10) unsigned NOT NULL auto_increment,
`idbook` int(10) unsigned default NULL,
`iduser` int(10) unsigned default NULL,
PRIMARY KEY (`idbook`),
INDEX `iduser` (`iduser`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
INSERT INTO book ... -- nova knizka
INSERT INTO user ... -- novy uzivatel
INSERT INTO owned ... -- knizka1 pujcena uzivateli
INSERT INTO owned ... -- knizka2 pujcena uzivateli
INSERT INTO owned ... -- knizka3 pujcena uzivateli
SELECT a.iduser, a.idbook, b.name, c.name -- vyber knih pujcenych uzivatelem
FROM owned a
LEFT JOIN user b ON b.iduser = a.iduser
LEFT JOIN user c ON c.idbook = a.idbook
WHERE a.iduser=123
jo, 250 radku, kde jsou ty casy :) 2700 mam ted v rozdelane js hre (po odstraneni komentaru stareho kodu zbylo 1600), pulka z toho jsou komenty vyrazeneho kodu, co pujdou pryc.
Z meho pohledu je efektivni to vytahnout jednim dotazem. Nenavrhoval jsem zadny komplikovany dotaz. Vyberes si seznam idecek a k nim pak dohledas prislusne udaje v prvnim pripade pro prvni zaznam, ve druhem pak pro vsechny. Schematicky by se to dalo asi napsat jako
dotaz2 (dotaz1 LIMIT 1) UNION dotaz3 (dotaz1 LIMIT 2,30)
* prvni zavorka je dotaz1 s ORDER BY a vyber prvni polozky
* druha zavorka je opet dotaz1, ale vyber od druhe polozky, 30 radku
* dotaz1 vybere pouze tabulku se seznamem id, takze to ma hned. Kdyz bude uplne stejny podruhe, tak by se to melo samo kesovat, takze ma vysledek bleskove bez prace
* dotaz2 a dotaz3 pak dohleda k vysledkum prislusna data. Ale protoze union vyzaduje stejnu pocet sloupcu, tak je nutne pridat do selectu v dotazu 3 polozku navic jako NULL as text.
No, a kdybys napsal ty sql dotazy, jak to mas ted a funguje ti to, tak by se to dalo resit :) Takhle je to jen par napadu nad necim neurcitym.
jo, v tom druhem dotazu na poslednim radku nema byt LIMIT a mozna by mel byt limit take v tom dotaz1
Chapu to tak, ze mas seznam clanku, ty potrebujes seradit podle nejnovejsiho nahoru a u toho nejnovejsiho potrebujes cely text.
Bud bych pouzil SELECT v SELECTu a UNION a nebo jenom UNION. Zalezi na tom, zda dotazes spravne napsat podminky pro vybrani toho prvniho radku. Ta slozitejsi varianta (misto dotaz1 pak napises cely ten select, mozna to jde i jinak, jednoduseji, ale nejsem moc odbornik):
dotaz1 SELECT COUNT(*) AS n, id FROM clanky WHERE ... ORDER BY ...
SELECT b.id, b.text FROM (dotaz1) a LEFT JOIN clanky b ON a.id=b.id LIMIT 1
UNION
SELECT b.id, NULL AS text FROM (dotaz1) a LEFT JOIN clanky b ON a.id=b.id LIMIT 1
google = mysql select cislovani radku