Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте,
Недавно у меня возникла проблема, связанная с сортировкой вывода.
Имеется некая база:
+-------------------------------+-----+
| name | id |
+-------------------------------+-----+
| Семенов Семен Семенович | 208 |
+-------------------------------+-----+
| Иванов Иван Иванович | 316 |
+-------------------------------+-----+
| Петров Петр Петрович | 480 |
+-------------------------------+-----+
| Алексеев Алексей Алексеевич | 94 |
+-------------------------------+-----+
| Сергеев Сергей Сергеевич | 141 |
+-------------------------------+-----+
И условная таблица приоритетов (соответствий) (существующая только на бумаге):
+-----+-----+
| x | y |
+-----+-----+
| 94 | 1 |
+-----+-----+
| 480 | 2 |
+-----+-----+
| 208 | 3 |
+-----+-----+
| 141 | 4 |
+-----+-----+
| 316 | 5 |
+-----+-----+
Требуется сделать запрос из первой базы, как бы заменить значения поля ID по второй таблице (x -> y), отсортировать по возрастанию и заменить значения обратно (y -> x).
В итоге должно получиться это:
+-------------------------------+-----+
| name | id |
+-------------------------------+-----+
| Алексеев Алексей Алексеевич | 94 |
+-------------------------------+-----+
| Петров Петр Петрович | 480 |
+-------------------------------+-----+
| Семенов Семен Семенович | 208 |
+-------------------------------+-----+
| Сергеев Сергей Сергеевич | 141 |
+-------------------------------+-----+
| Иванов Иван Иванович | 316 |
+-------------------------------+-----+
Теперь вопрос: можно ли как-то это выполнить средствами MySQL? Желательно без создания таблицы соответствий, заменяя значения "на лету". Или же обойтись без замен вообще, выставляя приоритеты вывода прямо в запросе.
Заранее спасибо, с уважением, Crystall.
Неактивен
Можно, выставляя приоритеты вывода прямо в запросе
Неактивен
vasya, спасибо большое! Который раз ваши советы помогают мне решить, казалось бы, совсем не поддающиеся логике задачи
РЕШЕНИЕ НАЙДЕНО, работает отлично. Thnx to vasya
Отредактированно Crystall (15.06.2010 14:02:58)
Неактивен
Это конечно прекрасное решение, но когда приоритетов будет не 5 а 30 будет уже очень несладко
Сделайте лучше еще одну таблицу и вносите в нее изменения, а выбирайте так
Отредактированно Shopen (15.06.2010 16:37:01)
Неактивен
Shopen, благодарствую за ещё один вариант решения данной проблемы Но всё дело в том, что база данных является критичной для программы, и не хотелось бы вносить в неё какие-либо изменения. Хотя, конечно, было бы намного удобнее и проще. В любом случае, спасибо! Любой другой, столкнувшийся с подобной задачей, будет рад узнать, что существует как минимум два пути решения
Отредактированно Crystall (15.06.2010 23:48:21)
Неактивен