[closed]

dseleznev

[closed]

6yrop

покажи результаты

fotopsj100

Запрос правильный, просто скорее всего ты не совсем такого результата ожидаешь. В данном случае данные сортируются по колонке указанной первой в списке следующем после order by, по второй колонке сортируются результаты значения которых совпадают по 1 колонке.

Пример: select * from tab1 order by col1, col2

a 1
b 1
c 1
c 2
c 3
d 2
d 7

dseleznev

, спасибо.
Воткнул.
Вопрос закрыт.

sbs-66

Вот объясните мне, как можно ожидать другого результата? Типа данные будут отсортированны и по первой и по второй колонке одновременно? Ежу понятно, что это невозможно. Вот я тут уже все мозги протёр, но никак не могу понять, чего ожидал автор треда от сортировки.

pitrik2

и я тож не догоняю чего он хотел
давайте конкрус утсроим: кто первый догадается что он хотел :)

uncle17

первая догадка: он сам не знал

jonishko

Может быть ожидал вот такой результат? :)
a 1
b 1
c 1
c 2
c 2
d 3
d 7

pitrik2

интересная задача кстати: а как такое сделать?
во вложенных же подзапросах нельзя order by юзать...

hprt

Сделать-то наверное можно (мускуль не знаю в мсскл и оракле - легко. Вопрос - а нах?

pitrik2

легко
ну расскажи как, чтот я туплю...

Geddi-S

Да-да, мне тоже интересно, как средствами SQL (не PL\SQL с курсорами, например) сформировать запрос, чтобы в ответе была таблица, в которой оба столбца были отсортированы независимо

artimon

А зачем?
Для связанных данных это не имеет смысла, а несвязанные проще достать двумя запросами.

hprt

сделать два подзапроса и сджойнить по row_number
Тем не менее, смысла в подобных результатах я не вижу

nekaya

только одна версия:
при наличии некоего третьего столбца и отчета в виде сводной таблицы (перекрестный запрос где по строкам и столбцам идут эти col1 и col2, а col3 - некая анализируемая величина, при условии что стори и столбцы в отчете отсортированиы получим,
что такой запрос вернет имена строк и столбцов "диагонали отчета".
если долбанутый заказчик захочет выделить эту "диагональ" цветом, то при форматировании такого отчета скажем в excel такой запрос может быть использован. Но лучше этого не делать, а если делать, то по-другому.

sinet

во вложенных же подзапросах нельзя order by юзать...
Можно всё. А потом по ROWNUM соединить.

pitrik2

сделать два подзапроса и сджойнить по row_number
ну-ну
во-первых я просил бзе использования order by в подзапросах, ты видимо предлагаешь с ним
во-вторых 4 вложенных запроса это кошмар

hprt

1 - Откуда 4 вложенных запроса?
2 - даже если 4 - ну и хрен с ним, поставлена тупая задача - выдано тупое решение. Требований к производительности и тд не ставилось. Только не говори, что подобный метод выдаст неверный результат
3 - В чистом виде ORDER BY в подзапросах действительно нельзя использовать, по крайней мере в MSSQL, но можно сделать "TOP совсеммного" - тут ORDER BY замечательно отработает, но так, как я предложил - ROW_NUMBER (ORDER BY ...) - тоже отработает на ура - замечу, тут сортировки вообще нет(! т.е. можно сортировать по другим полям если надо /* MSSQL 2005 */, как в оракле точно не скажу - больше 2 лет под него не писал ничего, но думаю, что если также нельзя использовать сортировку в подзапросах, условие типа "WHERE ROWNUM < совсеммного" тоже замечательно отработает // если ошибся в названии счетчика - прошу прощения, не помню точно

hprt

Дим, в твоем примере данные не связаны друг с другом - у автора они в одной строке идут

nekaya

Серег, в моем неимоверно притянутом за уши возможном обосновании необходимости делать такую фигню подразумевается,
что первые 2 поля являются своего рода составным ключом к третьему полю, которое надо как-нибудь агрегировать и выложить на простыню NxM и анализировать с использованием мерзкого заказчика, придумавшего какой-то изврат, и Excel.
Оставить комментарий
Имя или ник:
Комментарий: