Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Упорядочить выборку не имея явного критерия 
V
    Опции темы
Wolf1994
Дата 11.5.2008, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: нет
Всего: 29



Есть запрос, типа:

Код

SELECT * FROM `table` WHERE `id` IN (1,3,2)

Как выбрать из БД поля в данном порядке (1,3,2)?

С приведённым запросом получается порядок: 1,2,3.
PM MAIL WWW   Вверх
skyboy
Дата 11.5.2008, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



укажи поля явно!
очень надеюсь, что конструкцией 
Цитата(Wolf1994 @  11.5.2008,  14:41 Найти цитируемый пост)
WHERE `id` IN (1,3,2)

ты не пытался определить последовательность полей в результате, ведь эта конструкция делает совсем другое
PM MAIL   Вверх
Fortop
Дата 11.5.2008, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 4
Всего: 42



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

И если у него нет другого индекса по какому-либо полю, то вывести в таком виде 1,3,2 - можно только случайно.

Это сообщение отредактировал(а) Fortop - 11.5.2008, 16:08


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Wolf1994
Дата 11.5.2008, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: нет
Всего: 29



Цитата(skyboy @  11.5.2008,  16:05 Найти цитируемый пост)
укажи поля явно!

Как это сделать? OR?

Добавлено @ 16:10
Fortop, то есть задача нерешаема?

Это сообщение отредактировал(а) Wolf1994 - 11.5.2008, 16:12
PM MAIL WWW   Вверх
Fortop
Дата 11.5.2008, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 4
Всего: 42



Wolf1994
Для начала нужно понять что ты хочешь smile

Вот таблица

Код

id Б С Д
1  К К К
2  В В В
3  У У У

переставить местами столбцы id, Б, С, Д - можно
а вот строки 1,2,3 - только сортировкой по какому-либо столбцу или нескольким сразу.

Почему тебе надо вывести именно так?
Код

id Б С Д
1  К К К
3  У У У
2  В В В

Чем отличаются между собой записи?


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
skyboy
Дата 11.5.2008, 16:42 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



Цитата(Fortop @  11.5.2008,  15:15 Найти цитируемый пост)
вот строки 1,2,3 - только сортировкой по какому-либо столбцу или нескольким сразу.

не, ну для извращенцев можем сортировать по locate(concat(",",id,","),",1,3,2,")  smile 
да, и правда, не сразу понял, что хочет автор. 
Цитата(Wolf1994 @  11.5.2008,  15:09 Найти цитируемый пост)
Fortop, то есть задача нерешаема?

на стороне клиента, обрабатывающего результат выполнения запроса, получи данные в массив - и верти им как угодно. 
только зачем?  smile 
PM MAIL   Вверх
Wolf1994
Дата 11.5.2008, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: нет
Всего: 29



Цитата(skyboy @  11.5.2008,  16:42 Найти цитируемый пост)
не, ну для извращенцев можем сортировать по locate(concat(",",id,","),",1,3,2,")  smile 

Спасибо за решение.

Цитата(Fortop @  11.5.2008,  16:15 Найти цитируемый пост)
Почему тебе надо вывести именно так?

Я не силён в MySQL, поэтому решил разложить сложный для меня запрос на части. Результатом выполнения является массив из нескольких отсортированных `id`, по которым надо было получить финальный результат.
PM MAIL WWW   Вверх
Fortop
Дата 11.5.2008, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 4
Всего: 42



Wolf1994, уточни условия задачи.
Возможно она решается совсем другим способом smile


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Akina
Дата 11.5.2008, 17:21 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Цитата(Wolf1994 @  11.5.2008,  16:41 Найти цитируемый пост)
Как выбрать из БД поля в данном порядке (1,3,2)?

Именно такой порядок записей ведь чем-то обоснован? не идиотским "а вот хочу", а чем-то осмысленным и вменяемым... чем?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
skyboy
Дата 11.5.2008, 17:23 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



черт. а ведь я пошутил :(
Wolf1994, это решение подходит ещё только в том случае, если у тебя количество выбираемых записей 1-10 и по этим записям никакого join'a и прочих операций не происходит.
в противном случае это чревато.
Цитата(Fortop @  11.5.2008,  16:19 Найти цитируемый пост)
Возможно она решается совсем другим способом

не люблю категоричность в высказываниях, но в данном случае, как мне кажется, она непременно решаема другими методами. более быстрыми и менее запутанными
PM MAIL   Вверх
Wolf1994
Дата 11.5.2008, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: нет
Всего: 29



Цитата(skyboy @  11.5.2008,  17:23 Найти цитируемый пост)
Wolf1994, это решение подходит ещё только в том случае, если у тебя количество выбираемых записей 1-10 и по этим записям никакого join'a и прочих операций не происходит.

Именно так )

Цитата(Akina @  11.5.2008,  17:21 Найти цитируемый пост)
Именно такой порядок записей ведь чем-то обоснован? не идиотским "а вот хочу", а чем-то осмысленным и вменяемым... чем? 


Цитата(Wolf1994 @  11.5.2008,  17:07 Найти цитируемый пост)
Я не силён в MySQL, поэтому решил разложить сложный для меня запрос на части. Результатом выполнения является массив из нескольких отсортированных `id`, по которым надо было получить финальный результат.


Цитата(Fortop @  11.5.2008,  17:19 Найти цитируемый пост)
Wolf1994, уточни условия задачи.
Возможно она решается совсем другим способом smile 

Мне подошло данное решение. Кажется, оно оптимально для моего случая.

Всем спасибо!

Вопрос решён.
PM MAIL WWW   Вверх
Fortop
Дата 11.5.2008, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 4
Всего: 42



Цитата(Wolf1994 @  11.5.2008,  17:37 Найти цитируемый пост)
Мне подошло данное решение. Кажется, оно оптимально для моего случая

 smile убиться об стену....

skyboy, 30ть раз подумай в следующий раз smile народ шуток не понимает smile
Впрочем, может так ему и надо, раз не понимает? smile




--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Wolf1994
Дата 11.5.2008, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: нет
Всего: 29



Fortop, в рамках данной темы лучшего решения предложено не было. По задаче, которую я им решил я создам отдельную тему - кажется, так следует делать по правилам форума.
PM MAIL WWW   Вверх
Akina
Дата 12.5.2008, 07:57 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Цитата(Wolf1994 @  12.5.2008,  00:51 Найти цитируемый пост)
в рамках данной темы лучшего решения предложено не было

И не могло быть предложено. Имхо.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0896 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.