Сортировать список по фамилии, затем по имени? - PullRequest
1 голос
/ 14 июля 2010

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

Last Name + Father's First Name Initials + First Name

Пример:

Beavers L. Scott James (father has one first name, son has two first names) 
Beavers L. D. Scott (father has two first names)

Вместо необходимости заполнять 3 поля вводаполя, я хочу только одного.Но вопрос в том, как мне это отсортировать?Я хочу сначала отсортировать по «Фамилии», затем по «Имени», а затем по «Инициалам отца».Таким образом, два студента с похожими именами будут выглядеть так:

1. Beavers F. Christian
2. Beavers V. Scott James
3. Beavers L. Scott Paul
4. Beavers K. Sean
5. Beavers Q. Sean

Есть идеи?

Ответы [ 3 ]

6 голосов
/ 14 июля 2010

Не портите свои данные.

Сохраните три отдельных поля: фамилия, имя, отцовские инициалы.

Затем скопируйте вывод:

select concat( last_name, ' ',  paternal_initials, ' ', first_name) as displayed_name
from table 
order by last_name, paternal_initials, first_name;

Обновление:

Я хочу упростить добавление информации и использовать одно поле ввода. - Норберт

Но люди так не думают: фамилия, инициалы родителей, имя.

Они будут склонны думать о двух отдельных сущностях: студент с именем и имя отца студента.

Если ваши пользователи находятся в культуре, где фамилии идут последними, вы могли бы иметь поле Student's Name и поле Father's Name, и предполагать, что последним словом в каждом является фамилия. Конечно, это не работает, если за фамилиями следуют суффиксы, такие как «Jr», «Senior» или «3rd», и для испаноязычных стран, которые следуют фамилией с фамилией матери.

Самым безопасным, конечно, являются отдельные, однозначные поля. Дополнительные «затраты» для пользователя на необходимость перехода на другое поле могут фактически быть меньше, чем когнитивные «затраты» на то, чтобы выяснить, как использовать неоднозначное поле.

2 голосов
/ 14 июля 2010

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

1 голос
/ 14 июля 2010

Если это все в одном столбце, похоже, вам придется вернуть 2 столбца в запросе.Первое - это имя как есть, второе - сложное преобразование строки имени (может быть уродливым).Упорядочить по второму столбцу, отобразить первый в приложении результатов.

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