Вывести записи с БД в алфавитном порядке

12
UB
На сайте с 13.04.2006
Offline
44
2725

Собсвенно сабж.

У меня есть БД MySQL с городами таком виде:

Moscow

Washington

Kiev

Manhatten

Dallas

нужно вывести сначала буквы как ссылки, а потом переходя по буквам попадать в названия городов начинающихся с этой буквы.

i73
На сайте с 08.03.2006
Offline
188
i73
#1

в личку или аську стукните - помогу.

DJ_Petrovich
На сайте с 13.02.2006
Offline
188
#2

select [поле] from [таблица] order by [поле] asc

Тонны одноцентового трафика из Директа для ваших сайтов. Настройка - бесплатно! (/ru/forum/779616) Лендинг + Реклама в Яндекс.Директ за 15 минут! (/ru/forum/comment/16213883)
Каширин
На сайте с 03.01.2004
Offline
1031
#3
DJ_Petrovich:
select [поле] from [таблица] order by [поле] asc

Не то.

Предлагаю такое решение.

1. Сначала текстом выводим цикл букв английского алфавита.

2. При переходе по ссылке с буквы делаем запрос:

select [поле] from [таблица] where [поле] LIKE '$letter%' order by [поле] (asc писать не обязательно - он по-умолчанию), где $letter - буква алфавита.

3. Если число строк запроса = 0 - выводим сообщение "Городов на эту букву нет". Если > 0 - выводим циклом результаты запроса.

DJ_Petrovich
На сайте с 13.02.2006
Offline
188
#4
Каширин:
asc писать не обязательно - он по-умолчанию

:) <off>

в программировании и веб-дизайне вообще много чего необязательно, но ,по опыту, лучше все "необязательное" делать обязательными. Причин как минимум две - переносимость кода и ГОРАЗДО☝ меньшие усилия при отладке. Проверено.

</off>

UB
На сайте с 13.04.2006
Offline
44
#5

Ребята. Спасибо большое!

[Удален]
#6

Каширин, а зачем выводить те буквы, на которые нет городов? Кому нужно видеть "извнините, городов на эту букву нет". Так что одним запросом выводим только то, что есть.

K
На сайте с 14.08.2006
Offline
56
ksm
#7

Лучше так:

Вывести уникальный список первых букв городов:

select distinct(left([поле_города],1)) from [таблица] order by [поле_города]

Ну а потом уже как предлагал Каширин п.2

QAвед-sunтехник
[Удален]
#8
ksm:
select distinct

Не лучше, distinct вообще очень медленно работает даже при наличии индекса. Буквы можно средствами php рисовать.

М
На сайте с 01.12.2005
Offline
73
#9
javadf:
Не лучше, distinct вообще очень медленно работает даже при наличии индекса. Буквы можно средствами php рисовать.

так же как и просто селект с такими же условиями (а иногда и быстрее), а если городов меньше 500, то они скорее всего попадут в одну страницу БД и индекс вообще не будет использоваться!

Cервис для оптимизаторов Optimizer Desktop (http://jdev.ru/od/?utm_source=forum.se.ru&utm_medium=signature): мониторинг позиций, учет ссылок. Программа для оптимизаторов и вебмастеров OptiSuit (http://optisuit.ru/?utm_source=forum.se.ru&utm_medium=signature): Optimizer Desktop на Вашем компьютере
K
На сайте с 14.08.2006
Offline
56
ksm
#10
javadf:
Не лучше, distinct вообще очень медленно работает даже при наличии индекса. Буквы можно средствами php рисовать.

Спорно это. Конечно все зависит от размера базы ... только что проверил - на 5к записей запрос отработал 0,06 сек., на 700к - 0,2 сек. Нормально по-моему. Если городов будет много, то есть смысл крутить в пхп, только чтобы лишний раз не обращатся к базе - все равно будут города на все буквы (по теории вер.), если мало, то можно и запрашивать.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий