Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Сортировка по результатам подзапроса / 7 сообщений из 7, страница 1 из 1
09.02.2001, 02:18
    #32002099
Brand
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка по результатам подзапроса
Есть запрос примерно такого вида:
select * from table1 where field1 in (select field1 from table2 order by field2)

Подзапрос возвращает значения в определенном порядке, отсортированные по field2. Как сделать так чтобы основной запрос тоже выводил значения отсортированные по результатам подзапроса? Эм.. немного туманно получилось в общем если подзапрос вернет "5", "1", "3" - то нужно чтобы и основной запрос выводил сначала те строки в которых field1=5 потом, field1=1 и наконец field1=3
...
Рейтинг: 0 / 0
09.02.2001, 08:56
    #32002103
Дед Маздай
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка по результатам подзапроса
Имеем 2 таблицы: table1 (id, field1) и table2 (id, field2). Поле id в обеих identity и primary key. Колонка field1 = {1, 2, 3, 4, 5}; колонка field2 = {5, 1, 3}. Тогда твой запрос нужно переписать как select table1.id, field1 from table1 inner join table2 on field1 = field2 order by table2.id
...
Рейтинг: 0 / 0
09.02.2001, 09:35
    #32002106
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка по результатам подзапроса
хотел бы добавить

В общем случае эта задача не решаема в принципе - ведь полю field1 в таблице table2 может соответствовать несколько и наоборот. И какое field2 тогда использовать для сортировки?
...
Рейтинг: 0 / 0
09.02.2001, 11:08
    #32002113
VadimB
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка по результатам подзапроса
может для общего случая можно так:

select distinct
table1.id, table1.field1
from table1,table2
where table1.field1 *= table2.field1
order by table2.id
...
Рейтинг: 0 / 0
09.02.2001, 17:33
    #32002133
Brand
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка по результатам подзапроса
Для моего случая получилось так:
select * from table1 order by
(select sum(field2) from table2 where table2.field1 = table1.field1)

Напрягает только время выполнения.. :|

p.s. Да да, мне надо было сортировать именно по сумме
...
Рейтинг: 0 / 0
09.02.2001, 18:44
    #32002135
Garya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка по результатам подзапроса
SELECT T1.*
FROM Table1 T1 INNER JOIN
(SELECT Field1, SUM(Field2) AS SM
FROM Table2 GROUP BY Field1) T2
ON T1.Field1 = T2.Field1
ORDER BY T2.SM
...
Рейтинг: 0 / 0
09.02.2001, 23:52
    #32002148
Brand
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка по результатам подзапроса
Garya, а вот твой вариант просто летает
Thanks
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Сортировка по результатам подзапроса / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]