Autor Zpráva
keeehi
Profil
ahoj
mám tabulku kde však není číselné ID s autoincrementem. Jako primary key je použit sloupec ve kterém je náhodně 6 alfanumerických znaků(samozdřejmě že se neopakují). V tabulce je i sloupec "typ" ve kterém je číslo 1-5 V tabulce je i sloupec datum, který asi nepůjde moc použít - vysvětlení níže

potřebuji vybrat 20 posledních záznamů které se do tabulky uložily a ve sloupci "typ" je 3.

Proč nelze použít datum? protože pokud bych to srovnal podle data sestupně, může se mi stát, že na pozicích 18-23 bude stejné datum -> 2 datumy budu zahrnuty a 3 ne, ale ty dva však nemusejí být bloženy jako 18tý a 19tý.


případně bych dodatečně doplnil do tabulky i ID s autoincrementem, ale v tabulce je už velké množství dat. šlo by to udělat nějak automaticky?
Leo
Profil
Tak bud chcete nebo nechcete poslednich 20 zaznamu. A aby to melo smysl, musite je podle neceho seradit, nic jineho, nez datum nemate. Takze musite upresnit pozadavek. Leo
mikul
Profil
Nemužete např. místo jen datumu vkládat do dtb celý čas? Aspoň jsem to pochopil, že vkládáte pouze datum. Myslím, že 3 nové řádky v dtb během jedné vteřiny nebudeou ne?
keeehi
Profil
jsou dvě(tři) možnosti:
1) seřadit je tak, jak je postupně mysql ukládalo (tak jsou seřazené při výpisu select * from tabulka) ale pak nevím jak napsat LIMIT
2) seřadit je obráceně, než je mysql ukládalo - LIMIT 0,20 ale zase nevím, jak zapsat ORDER BY (ORDER BY desc asi nepůjde)


3) do databáze přidám sloupec ID s autoincrementem -do toho se mi moc nechce -> pak bych prosil poradit, jak ho nějak automaticky vyplnit.
keeehi
Profil
Nemužete např. místo jen datumu vkládat do dtb celý čas? Aspoň jsem to pochopil, že vkládáte pouze datum. Myslím, že 3 nové řádky v dtb během jedné vteřiny nebudeou ne?

ne nemůžu - není to datum ukládání, ale datum vytvoření. vysvětlení: Například někdo napíše na nějakej cizí server článek. Ten se uloží a u něj je jen datum bez času. Já se na ten servr připojím na stránku s výpisem nejnovějších 20-ti článků a pak se kouknu do databáze, zda už tam ty články jsou, a pokud tam nejsou, tak je doplním. nechci však zbytečně prohledávat celou databázi, stačí mi právě 20 posledních vložených záznamů.
Kajman_
Profil *
Přidejte si id, nebo změňte sloupec z date na datetime.
Andre
Profil
Na vybráni 20 záznamu zkus: TOP 20 a zbytek napiš normálně.
keeehi
Profil
Kajman_Přidejte si id, nebo změňte sloupec z date na datetime.
jak jsem psal výše, datum neí datum ukládání do databáze a datum vtvoření článku na tom jiném servru. id se mi přidávat nechce, naboť budu pak muset upravit všechny ostatní inserty, selecty ... (a že jich není málo)

Andre
nějak jsem to nepochopil. jak by ten select měl vypadat?
Andre
Profil
SELECT TOP 20, * FROM tabulka WHERE neco=neco

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: