X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Обрезание значения до пробела и сортировка средствами MySQL
zabmix
zabmix
Topic Starter сообщение 17.5.2012, 11:54; Ответить: zabmix
Сообщение #1


Доброго дня.
В базе существуют записи типа:

Летченко Вика Александровна
Кудрявцева Анастасия Викторовна
Васильев Вася Анатольевич

Как удалить фамилию из данного значения, чтоб выводилось: "Вика Александровна" и при этом отсортировано по алфавиту?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Arks
Arks
сообщение 17.5.2012, 17:19; Ответить: Arks
Сообщение #2


SET @fullname = CONCAT_WS(' ', 'Letchenko', 'Vika', 'Aleksandrovna');
SELECT CONCAT(SUBSTRING_INDEX(SUBSTRING_INDEX(@fullname, ' ', 2), ' ', -1), ' ', SUBSTRING_INDEX(SUBSTRING_INDEX(@fullname, ' ', 3), ' ', -1)) as newname;

а про сортировку не понял что имелось в виду
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
zabmix
zabmix
Topic Starter сообщение 17.5.2012, 20:45; Ответить: zabmix
Сообщение #3


(Arks @ 17.5.2012, 20:19) *
а про сортировку не понял что имелось в виду

Всмысле уже по готовому имени, что в итоге получится отсортировать.

А это быстро будет работать? По моему сложновато для MySQL или пойдет?

просто выбор встал mysql или php как лучше реализовать и что быстрее, кстати строк будет не больше 50
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Muxa_hb
Muxa_hb
сообщение 17.5.2012, 22:05; Ответить: Muxa_hb
Сообщение #4


имхо, проще всего вместо одного поля с ФИО создать три поля с именем, фамилией и отчеством в БД и извлекать не все поля.. и сортировать также - и проще, и быстрее, как мне кажется
чем разные "обрезания" делать и голову ломать как это сделать :)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 17.5.2012, 22:14; Ответить: alexdrob
Сообщение #5


(zabmix @ 17.5.2012, 23:45) *
А это быстро будет работать?

А об этом нужно было позаботиться при проектировании бд :)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Arks
Arks
сообщение 17.5.2012, 22:44; Ответить: Arks
Сообщение #6


никто не мешает Вам таким способом 1 раз сконвертировать БД в новую схему с отдельными полями и все будет работать быстро, зачем при запросах то?
SUBSTRING_INDEX(SUBSTRING_INDEX(@fullname, ' ', <номер слова>), ' ', -1) - вот фактически выбор нужного слова.
В общем не парьтесь. А вот когда надо собрать в ФИО при выборке просто используйте CONCAT/CONCAT_WS - это очень быстрые функции. Для mysql важно не количество строк а query_cost.
Если в таблице 50 строк нафига Вам вообще mysql для этого? var_export/include или fwrite/file_get_contents(fread) всего и делов будет раз в 5-10 быстрее mysql.. или если myIsam можно писать через mysql а читать напрямую из файла БД.
Если в таблице 10 лямов строк то выбирайте хоть 50 хоть 100500 все равно все будет тупить.

Насчет сортировки - в данном случае сотрировка вообще не относится к выборке. CREATE TEMPORARY TABLE<>.. INSERT INTO tmp_table SELECT<>... SELECT FROM tmp_table ORDER BY<> .. DROP TABLE<> и вперед сортируйте что угодно. При сортировке mysql и так и так создает обычно временные таблицы из выборки - тут Вы просто делаете это явно за него чтобы подсказать оптимизатору что надо сортировать именно из временной таблицы(а то если не очень мног записей он может решить например сделать фулскан таблицы и сортировать файлсортом а уже потом что-то выбирать, если сочтет это быстрее сортировки из временной таблицы и в этом оптимизатор может ошибаться).
С полнотекстовыми сортировками на php много гемероя так что не рекомендую - БД или sphinx справится лучше и быстрее.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
zabmix
zabmix
Topic Starter сообщение 18.5.2012, 7:30; Ответить: zabmix
Сообщение #7


Arks, спасибо за столь подробный ответ, разжевали мне :)

(alexdrob @ 18.5.2012, 01:14) *
А об этом нужно было позаботиться при проектировании бд :)

Проще использовать один запрос в одном месте, чем изменить везде запросы и структуру БД :)

А то что использовать файл в 50 строках, пожалуй отличное предложение, но не для данного случая.

Всем спасибо :)

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery
Разработка сайтов и сервисов под-ключ
0 alexey 1237 24.11.2023, 14:46
автор: alexey
Открытая тема (нет новых ответов) Web программирование на С/С++/PHP/MySQL/SQL, высоконагруженные проекты
Есть наработки в области бирж трафика, топов, тизеров, видео cj-тубов
4 DFService 3347 8.4.2020, 18:02
автор: DFService
Открытая тема (нет новых ответов) Верстка, php + mysql, недорого
3 devprojectlab 2654 28.10.2019, 18:53
автор: Mukis
Открытая тема (нет новых ответов) Нужен человек, который хорошо понимает php+mysql
Нужен человек, который хорошо понимает php+mysql
0 dsugar 2497 7.9.2018, 10:37
автор: dsugar
Открытая тема (нет новых ответов) Нуждаюсь в услугах вебмастера, знающего html, css, php, mysql
1 Bizota 2971 21.8.2018, 1:33
автор: kalm


 



RSS Текстовая версия Сейчас: 16.4.2024, 21:25
Дизайн