Witam ponownie nie będe zakładać nowego tematu bo w sumie chodzi mi o rozwiniecie tego wątku ... ogólnie ogarnąłem prawie temat przy użyciu takiego takiego zapytania:
SELECT * from tabela order by
CASE when (substring_index(text, '/', -1) rlike '^[0-9]+') THEN substring_index(text, '/', -1) END ASC,
substring_index(text, '/', -1) + 0,text
Id |
text |
5 |
111/ab |
1 |
111/cdfg |
4 |
111/st |
2 |
qwer |
11 |
111/0 |
9 |
111/1 |
8 |
111/1-KSS |
6 |
111/2 |
12 |
111/5 |
3 |
111/67 |
Wszystko sortuje się w założony sposób tylko potrzebuję dodać do tego jeszcze jeden "wyjątek"... mianowice po dodaniu rekordów:
"111/0/A"
"111/0/b"
całość sortuję się w ten sposób:
Id |
text |
10 |
111/0/A |
7 |
111/0/b |
5 |
111/ab |
1 |
111/cdfg |
4 |
111/st |
2 |
qwer |
11 |
111/0 |
9 |
111/1 |
8 |
111/1-KSS |
6 |
111/2 |
12 |
111/5 |
3 |
111/67 |
moje pytanie brzmi dlaczego
Id |
text |
10 |
111/0/A |
7 |
111/0/b |
te rekordy są pierwsze ?
i jak zrobić żeby całość sortowała się w założony na początku sposób:
Id text
5 111/ab
1 111/cdfg
4 111/st
2 qwer
11 111/0
10 111/0/A
7 111/0/b
9 111/1
8 111/1-KSS
6 111/2
12 111/5
3 111/67
czyli pierwsze litery po "/" potem liczby ... w tym miejscu: http://sqlfiddle.com/#!9/3df258/1 jest działający przykład ... dziękuje za wszystkie sugestie pozdrawiam :]