Autor Zpráva
Kcko
Profil
Potrebuji dostat z DB seznam filmu pocet filmu na pocatecni pismeno

tj
A - 56x
B - 21x
C - 12x
Č - 22x
.
.


Dalo by se to zgrupovat podle prvniho pismena, oriznoout a seskupit, ale co pismeno CH ?

Napadlo me toto

SELECT IF (SUBSTRING(nazev, 1, 2) = 'Ch', 'Ch', SUBSTRING(nazev, 1, 1)) as pismeno, COUNT(*) as pocetFilmu  FROM film
GROUP BY pismeno


Ale zda se mi to takove neelegantni.

Resil to nekdo nekdy?
Kajman_
Profil *
Možná bych si na to udělal sloupeček, kde to písmeno bude předvyplněné (třeba triggerem).
Alphard
Profil
co samostatný sloupeček na první písmeno?
Kajman_
Profil *
Aby se dalo první písmeno indexovat a bylo to svižné.
Kcko
Profil
Tohle me taky samozrejme napadlo, jenze ta db uz ma nekolik tisic filmu, ale samozrejme to muzu zpetne pridat. Jen me zajimalo SQL reseni ...
Kajman_
Profil *
Řešení jsi už přeci psal.

Jen osobně při statisících řádcích a častém takové dotazu bych to ch a tak dal do zvlášního sloupečku.
Kcko
Profil
Ja vim, ze jsem reseni psal, jen mam v mozkovne zaryto, ze Kajman vymysli neco lepsiho a rychlejsiho ;]
Samozrejme ze sloucek navic bude nejlepsi reseni
izsak
Profil
SQL riešenie je samozrejme nastaviť správnu COLLATION, ktorá vie, že v danom jazyku je "ch" jedno písmeno abecedy. Nad tým samozrejme štandardný index, bez zbytočných ďalších stĺpcov či triggrov.
Kajman_
Profil *
Na seřazení celého názvu filmu to jistě zabere a ch bude po h, ale funkce left nebo substr vrátí z ch jako první písmeno jenom c i při českém porovnání.

Těžko říct, jestli bude znatelný rozdíl mezi původním dotazem a na tom pomocném sloupečku. Třeba sem Kcko ještě napíše porovnání, pokud to bude zkoušet.
Kcko
Profil
Collation s tim nema co delat, nejednalo se mi serazeni ale o neco jineho, coz asi iszakovi uniklo.
Pomocny sloupecek bude urcite o neco rychlejsi, taky jak jsem psal, nezajimala mne moc struktura DB ale SQL dotaz, ten sem si koneckoncu napsal sam, nikdo jinej s nicim neprisel takze LOCKUJU a zase jindy tradadada ;]]
Toto téma je uzamčeno. Odpověď nelze zaslat.

0