выборка по первому символу

desperado

Новичок
выборка по первому символу

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

Vinny

Guest
что-то типа:

select LEFT(Name, 1) as letter, count(LEFT(Name, 1)) as cnt from Table group by letter
 

desperado

Новичок
сенкс.

и еще маленький вопросик:
почему запрос
[ЦВЕТОМ=darkred]SELECT LEFT(name, 1) AS letter, COUNT(LEFT(name, 1)) AS cnt FROM books_books GROUP BY letter ORDER BY letter[/ЦВЕТОМ]
выполняется нормально, а в таком виде
[ЦВЕТОМ=darkred]SELECT LEFT(name, 1) AS letter, COUNT(LEFT(name, 1)) AS cnt FROM books_books GROUP BY letter ORDER BY binary(letter)[/ЦВЕТОМ]
говорит что неизвестное поле letter
 

Vinny

Guest
а хз... может поможет binary(LEFT(name, 1))... на 100% не уверен, попробуй...
 

desperado

Новичок
да впринципе не в этом суть. я делаю сортировку как binary(name). просто мне интересно, что в первом случае он распознат алиас letter (если не так назвал - поправте) а вот во втором случае сортировки пишет, что такого нема. может это глюк мускуля под виндами (версия 3.23.27), хз. надобы на никсах протестить
 

desperado

Новичок
кому будет интересно, то два решения моей проблемы:

первый (через SUBSTRING)
[ЦВЕТОМ=darkred]SELECT COUNT(*) AS total, SUBSTRING(word,1,1) AS letter FROM table GROUP BY binary(SUBSTRING(word,1,1)) ORDER BY binary(word);[/ЦВЕТОМ]

второй (через LEFT)
[ЦВЕТОМ=darkred]SELECT COUNT(LEFT(S_Name, 1)) AS total, LEFT(word, 1) AS letter FROM table GROUP BY binary(LEFT(word, 1)) ORDER BY binary(word);[/ЦВЕТОМ]

- можно еще помиксить substring и left, но это уже изврат

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

desperado

Новичок
ну вот и протестили

в таблице размером 39 килов, 777 записей
Код:
запрос    | вызовов |  вpемя   | сpеднее
----------+---------+----------+---------
substring | 10001   | 109.4699 | 0.0109 
left      | 10001   | 109.1061 | 0.0109
в базе размером 419.6 кило, 2.754
Код:
запрос    | вызовов |  вpемя   | сpеднее
----------+---------+----------+---------
substring | 10001   | 1829.979 | 0.1830 
left      | 10001   | 1540.718 | 0.1541
тестилось под мускулем 3.23.27 + пхп 4.1.3 + апачем 1.3.27 на двухтысячнеке про (без сп).
паралельно вертелся винампа третий, крутя аэросмита

железо
П-3 666 мГз (страшная весч :) ) 256 озу. (все остальное без мазы)
 
Сверху