Autor Zpráva
Doct
Profil *
Dobrý den, potřeboval bych poradit. Mám takovýhle nějaký sql dotaz:
SELECT `ID`, `Name` FROM `tbl` WHERE `ID` = '1' ORDER BY `tbl`.`Name` ASC problém je v tom že v name jsou 3 slova, když jsem tu aplikaci psal, nenapadlo mě to a tedka už by to šlo jenom těžko přeprogramovat, takže bych chtěl vědět jestli by se dalo nějak řadit podle toho posledního slova v Name
Díky
DJ Miky
Profil
Dalo by se to, ale bude to dost pomalé. Když už nechceš ten sloupec měnit, bude lepší řešení vytvořit nový sloupec a do něj to poslední slovo zkopírovat (a případně aktualizovat při změně toho původního sloupce).
Doct
Profil *
No možná by se to dalo, ale víš jak, tu aplikaci jsem psal asi před půl rokem, nechce se mi už moc hrabat ve skriptech, upravovat to, raději bych udělal pouze úpravu sql. to že to bude pomalý mi zas až tak zatím nevadí...
juriad
Profil
Třiď podle
SUBSTRING_INDEX('Karel Hynek Mácha', ' ', -1) # mělo by vrátit 'Mácha'
Bude to ukrutně pomalé, ale nic lepšího na úrovni SQL asi nevymyslíš.

Pokud máš aplikaci správně navrženou, tak by se změna měla být nutná v jediné třídě.
Doct
Profil *
Díky, jenom prosím tě kam to přidám do toho svýho SQL dotazu? SELECT `ID`, `Name` FROM `tbl` WHERE `ID` = '1' ORDER BY `tbl`.`Name` ASC
Kajman
Profil
ORDER BY SUBSTRING_INDEX(`tbl`.`Name`, ' ', -1), `tbl`.`Name`
Doct
Profil *
Díky moc, už to funguje, tohle je jenom dočasné řešení, až budu mít čas, chci celou aplikaci předělat :)

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:

0