Russian Qt Forum
Июня 18, 2025, 22:11
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Программирование
>
Общий
>
Помогите написать sql-запрос
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Помогите написать sql-запрос (Прочитано 11266 раз)
kirill
Гость
Помогите написать sql-запрос
«
:
Мая 13, 2009, 08:17 »
Есть данные
912 A
412 G
222 B
912 C
я их хочу отсортировать по буквам - получу
912 A
222 B
912 C
412 G
теперь я их хочу сгруппировать по номеру, то есть получить
912 A
912 C
222 B
412 G
то есть отсортировать по букве, потом смотришь номер и переносишь в начало все строки с таким номером потом следующий номер и тд
смысл в том, что мне надо вывести отсортированные данные, но при этом следить чтобы одинаковые номера шли подряд и ради этого можно пожертвовать сортировкой по буквам.
Возможно ли написать такой запрос средствами sql?
Записан
spirit
Гость
Re: Помогите написать sql-запрос
«
Ответ #1 :
Мая 13, 2009, 08:34 »
так что-ли
SELECT * FROM test ORDER BY id DESC;
?
Записан
kirill
Гость
Re: Помогите написать sql-запрос
«
Ответ #2 :
Мая 13, 2009, 08:36 »
Цитата: spirit от Мая 13, 2009, 08:34
так что-ли
SELECT * FROM test ORDER BY id DESC;
?
Увы, не так. Разве вы видите в выходных данных сортировку по id?
912 A
912 C
222 B
412 G
Записан
kirill
Гость
Re: Помогите написать sql-запрос
«
Ответ #3 :
Мая 13, 2009, 08:38 »
Еще раз.
Сортировка по букве первична. А потом идут перестановки снизу вверх строк с одинаковыми id.
Записан
crossly
Гость
Re: Помогите написать sql-запрос
«
Ответ #4 :
Мая 13, 2009, 09:00 »
select * from test order by 1,2
Записан
spirit
Гость
Re: Помогите написать sql-запрос
«
Ответ #5 :
Мая 13, 2009, 09:01 »
тогда так
SELECT * FROM (SELECT * FROM test ORDER BY name) ORDER BY id DESC;
,
но по результату он от первого не отличается, возможно на больших объемах данных.
Записан
-QT-
Гость
Re: Помогите написать sql-запрос
«
Ответ #6 :
Мая 13, 2009, 09:13 »
Цитировать
смысл в том, что мне надо вывести отсортированные данные, но при этом следить чтобы одинаковые номера шли подряд и ради этого можно пожертвовать сортировкой по буквам.
Данная сортировка не подпадает под математическую модель sql запроса. поэтому либо писать обработчик самому,
либо IMHO переработать исходную компоновку хранения информации для возможного получения выходного результата
с помощю sql.
Записан
kirill
Гость
Re: Помогите написать sql-запрос
«
Ответ #7 :
Мая 13, 2009, 09:36 »
Цитата: crossly от Мая 13, 2009, 09:00
select * from test order by 1,2
если не ошибаюсь, ответом на этот запрос будет
222 B
412 G
912 A
912 C
Что опять же не совпадает с нужным результатом.
Записан
kirill
Гость
Re: Помогите написать sql-запрос
«
Ответ #8 :
Мая 13, 2009, 09:39 »
Цитата: spirit от Мая 13, 2009, 09:01
тогда так
SELECT * FROM (SELECT * FROM test ORDER BY name) ORDER BY id DESC;
,
но по результату он от первого не отличается, возможно на больших объемах данных.
результат
912 A
912 C
412 G
222 B
!=
912 A
912 C
222 B
412 G
Записан
spirit
Гость
Re: Помогите написать sql-запрос
«
Ответ #9 :
Мая 13, 2009, 09:40 »
да, не обратил внимание.
Записан
kirill
Гость
Re: Помогите написать sql-запрос
«
Ответ #10 :
Мая 13, 2009, 09:40 »
Цитата: -=QT=- от Мая 13, 2009, 09:13
Цитировать
смысл в том, что мне надо вывести отсортированные данные, но при этом следить чтобы одинаковые номера шли подряд и ради этого можно пожертвовать сортировкой по буквам.
Данная сортировка не подпадает под математическую модель sql запроса. поэтому либо писать обработчик самому,
либо IMHO переработать исходную компоновку хранения информации для возможного получения выходного результата
с помощю sql.
Переработать не получится по многим причинам. Что ж придется писать свой обработчик. Спасибо.
Записан
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3880
Re: Помогите написать sql-запрос
«
Ответ #11 :
Мая 13, 2009, 11:16 »
если посмотреть на результат, то сортировка по букве точно не первична.
А если действительно нужен хитрой алгоритм с перестановками, то только в рукопашную.
Записан
Юра.
kirill
Гость
Re: Помогите написать sql-запрос
«
Ответ #12 :
Мая 13, 2009, 11:31 »
Цитата: lit-uriy от Мая 13, 2009, 11:16
если посмотреть на результат, то сортировка по букве точно не первична.
А если действительно нужен хитрой алгоритм с перестановками, то только в рукопашную.
она первична. Если бы все буквы имели разные номера, то они бы выстроились строго по порядку.
Однако есть важное поле, которое может быть а может и не быть. Это этот самый номер. И если он есть, то буквы с одинаковым номером должны идти подряд.
Типа "по возможности отсортировано" по букве.
Вот такая вот хрень.
Начал лопатить врукопашную.
Записан
Kolobok
Гость
Re: Помогите написать sql-запрос
«
Ответ #13 :
Мая 18, 2009, 22:53 »
Код
SQL
SELECT
*
FROM
test
ORDER
BY
1
DESC
,
2
ASC
Записан
break
Гипер активный житель
Offline
Сообщений: 846
Re: Помогите написать sql-запрос
«
Ответ #14 :
Июня 28, 2009, 03:00 »
Может создать хранимую процедуру вывода, в которой сначала во временную таблицу заполнятся данные отсортированные по буквам, а потом вторым проходом пересортируются с учетом одинакового номера. При реализации второй проход может быть собственно выводом пользователю.
«
Последнее редактирование: Июня 28, 2009, 03:03 от break
»
Записан
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...