Алфавитный указатель.

Zaichik

Новичок
Алфавитный указатель.

Привет, подскажите как реализовать алфавитный указатель?
Имеется таблица, сл. вида:
._________________.
|ID | Char | Type |
|-----------------|
|1 | A | ABCD |
|2 | B | BADC |
|3 | C | CABC |
|4 | A | ABCD |
|5 | B | BADC |
|6 | C | CABC |
|7 | A | AABC |
|8 | C | CAAA |
|9 | C | CABC |
|10 | A | ACCB |
L-----------------`

С id, всё понятно, "Char", это первый символ "Type", т.е. если Type = Geek, то Char = G. И т.д.

Далее, если пользователь переходит на страницу например "index.php?Char=A", то выводится все поля строки из Type, где Char A. С этим я справился, проблема в том, что Type иногда повторяются, т.е. как сделать проверку, на то, выводился ли "Type" с таким именем, или нет? Фух, вроде всё описал. сеньк.
 

zerkms

TDD infected
Команда форума
1. SELECT DISTINCT `Type` FROM `table` WHERE `Char` = 'A'
2. SELECT `Type` FROM `table` WHERE `Char` = 'A' GROUP BY `Type`
 

inside85

Новичок
А мне кажется всё делается проще... зачем лишний столбец Char если можно сделать просто индекс по первой букве
Например: key letter (type(1))
а запрос: where type like 'a%'
 

Zaichik

Новичок
inside85, там 455990 строк, ИМХО с отдельным столбом побыстрее обрабатывать будет.
 

inside85

Новичок
чем это быстрее будет обрабатыватся? считай используется один и тот же индекс... просто один индекс строится по твоему отдельному столбцу а у меня индекс строится по первой букве столбца.
 

vbps

Новичок
А как с русскими буквами? Поисковики абру не любят.
Я сделал проще, при добавлении новой записи по первой букве присваевается цифра например для Б - 3, для всех что начинаются с цифры - 1 и тд.

А затем просто выводим все, например для 1.
 

Zaichik

Новичок
2vbps, интересная мысль. я просто сделал транслитом:
А - A
Б - B
...
Ч - CH
и тд.

Кстатьи, вопрос на засыпку, если в базе более 450к записей, она сильно тормозить будет?
 

Zaichik

Новичок
2alpine, смотря дорога какая %)
2Фанат, пасиб, а то я распереживалсо уж %)
 
Сверху