Autor Zpráva
matak
Profil *
Potřeboval bych zjistit kolik je v tabulce řádků kde sloupec např. jméno začíná písmenem abecedy tedy chci takový výpis:

A B C .......
4 1 0

asi tak, ale některá jména mohou mít duplicitní zápis, chci vědět kolik unikátních jmen začíná v tabulce na A, B, C atd....

Řešil jste někdo podobný problém?
djlj
Profil
SELECT COUNT(id) FROM tabulka WHERE sloupec LIKE 'A%'
matak
Profil *
nj to j, ale ja bych nerad podkladal 32 dotazu pro kazde pismeno plus pro kazdé číslo to by docela zpomalilo
Peca
Profil
select count(*), substring(sloupec,1,1) as lt from tabulka group by lt order by lt asc;
matak
Profil *
hm nj ja vymyslel strasny silenosti napr.
SELECT abeceda, count(i.ID)
FROM abeceda as a
LEFT JOIN info as i ON a.abeceda regexp SUBSTRING(jmeno, 1, 1)
GROUP BY abeceda;

no ale vypada ze tohle funguje dobre, ale nebude to strasně pomaly?např. 10000 záznamů a co duplicitní jména nechci aby se započítavaly

resp.
Adam Arnošt Adéla jsou 3
ale
Adam Arnošt Adéla Adam chci aby byly taky 3
matak
Profil *
a co velikost písma dá se eliminovat?

a A chci aby bylo to samé
matak
Profil *
problém mi dělá velikost, písma a diakritika S, s, Š, š
Kajman_
Profil *
Bude to chtít nastavit správné porovnání. A asi group by na jméno v nějakém poddotazu, aby se vyhodily ty duplicity.

Osobně bych si tam dal sloupeček s prvním písmenem a indexem, dotazy na větších datech na tom pak budou časově asi mnohem lépe.
matak
Profil
to porovnání co se týče S, s, Š, š jak na to?

duplicity jsem vyresil takto, tedy tím DISTINCTEM:

SELECT lower(substring(jmeno,1,1)) as abc, count(DISTINCT t1.ID)
FROM t1
LEFT JOIN t2 ON t1.ID=t2.ID
LEFT JOIN t3 ON t1.ID=t3.ID
group by abc order by abc asc;

ale ta fce lower se mi moc nelibi, nevim jak spomaluje pouziti techto fci, krom toho nereší to problém s diakritikou
Toto téma je uzamčeno. Odpověď nelze zaslat.

0