папа Карло писал(а):перечитал вопрос.... "Предпологается МССКЛ Сервер".... приведена таблица без никаких индексов. требуется выдать с 5ой по 10ую записей в физическом ордере (ибо хочет 11 и 20).... задача не имеет решения.
Пап, по-моему, это размышления Доктора наук ... Ты полагаешь, что на интервью могли задать вопрос такого порядка ? Не думаю...
А вааще мне это IT в Канаде что-то начинает уже заедать...
папа Карло писал(а):перечитал вопрос.... "Предпологается МССКЛ Сервер".... приведена таблица без никаких индексов. требуется выдать с 5ой по 10ую записей в физическом ордере (ибо хочет 11 и 20).... задача не имеет решения.
как так, а это? -
BEGIN
select identity(int,1,1) counter ,* into #temp from tbl
select * from #temp where counter between 5 and 10
drop table #temp
END
папа Карло писал(а):перечитал вопрос.... "Предпологается МССКЛ Сервер".... приведена таблица без никаких индексов. требуется выдать с 5ой по 10ую записей в физическом ордере (ибо хочет 11 и 20).... задача не имеет решения.
как так, а это? -
BEGIN
select identity(int,1,1) counter ,* into #temp from tbl
select * from #temp where counter between 5 and 10
drop table #temp
END
ну блин уже .... ты за ассампшен взял, что он тебе в таблицу во временную запишет в том порядке как оно там хранится? для того, чтоб такой ассампшен сделать надо было написать скл сервер оптимайзер
папа Карло писал(а):перечитал вопрос.... "Предпологается МССКЛ Сервер".... приведена таблица без никаких индексов. требуется выдать с 5ой по 10ую записей в физическом ордере (ибо хочет 11 и 20).... задача не имеет решения.
Пап, по-моему, это размышления Доктора наук ... Ты полагаешь, что на интервью могли задать вопрос такого порядка ? Не думаю...
А вааще мне это IT в Канаде что-то начинает уже заедать...
на самом деле кайфный вопрос.... я его себе в вопросник добавлю для интервью потенциальных кандидатов.
папа Карло писал(а):перечитал вопрос.... "Предпологается МССКЛ Сервер".... приведена таблица без никаких индексов. требуется выдать с 5ой по 10ую записей в физическом ордере (ибо хочет 11 и 20).... задача не имеет решения.
как так, а это? -
BEGIN
select identity(int,1,1) counter ,* into #temp from tbl
select * from #temp where counter between 5 and 10
drop table #temp
END
ну блин уже .... ты за ассампшен взял, что он тебе в таблицу во временную запишет в том порядке как оно там хранится? для того, чтоб такой ассампшен сделать надо было написать скл сервер оптимайзер
oops
имхо, все же, порядковые номера имелись в виду...
Seaman писал(а):Кстати, а на Таити действительно хорошо-о-о ... Там такие красивые девушки ... и черный жемчуг ...
Упс, но это не в тему, просто Yury навеял ...
Seaman писал(а):Кстати, а на Таити действительно хорошо-о-о ... Там такие красивые девушки ... и черный жемчуг ...
Упс, но это не в тему, просто Yury навеял ...
блин, а я вот не бывал
А я вот в IT не особо ... , особенно в своем вопросе на другую тему ...
Seaman писал(а):Кстати, а на Таити действительно хорошо-о-о ... Там такие красивые девушки ... и черный жемчуг ...
Упс, но это не в тему, просто Yury навеял ...
блин, а я вот не бывал
А я вот в IT не особо ... , особенно в своем вопросе на другую тему ...
Seaman писал(а):Да да да, простите, пропустил еще один SELECT:
SELECT * FROM (SELECT TOP 5 * FROM (SELECT TOP 10 * FROM table ORDER BY id) ORDER BY id DESC) ORDER BY id ASC;
Нам надо получить записи с 5-й по 10-ю, обращаем внимание, что id при этом = 11 и 20. В первую голову она (БД) выбирает первые 10 записей (1 - 10), потом она их переворачивает и снова выбирает первые 5 записей, но теперь с конца (10 - 5), после этого мы их ставим в правильном порядке (5-10), куда как раз эти id = 11 и id=20 и попадают.
Seaman писал(а):Да да да, простите, пропустил еще один SELECT:
SELECT * FROM (SELECT TOP 5 * FROM (SELECT TOP 10 * FROM table ORDER BY id) ORDER BY id DESC) ORDER BY id ASC;
Нам надо получить записи с 5-й по 10-ю, обращаем внимание, что id при этом = 11 и 20. В первую голову она (БД) выбирает первые 10 записей (1 - 10), потом она их переворачивает и снова выбирает первые 5 записей, но теперь с конца (10 - 5), после этого мы их ставим в правильном порядке (5-10), куда как раз эти id = 11 и id=20 и попадают.
Самый первый селект вроде как лишний?
он пересортировывает назад у него
все равно при <10 записях результат неверный
Yury,
Про последовательность.... Она может быть и просто возрастающей.
На практике так и бывает. При вставке новой записи просто инкрементируют ID.
All,
Фиг его знает, что имел ввиду интервьюрующий. Вопрос, конечно, можно завалить. Но завалил то интервью я по другим причинам. Я такоооооооооого не вспомнил, и о такоооооом недопёр.... Не скажу - стыдно. Вспомнил, через несколько минут, как вышел. И допёр также потом. Ну да фиг с ним.
Seaman писал(а):Да да да, простите, пропустил еще один SELECT:
SELECT * FROM (SELECT TOP 5 * FROM (SELECT TOP 10 * FROM table ORDER BY id) ORDER BY id DESC) ORDER BY id ASC;
Нам надо получить записи с 5-й по 10-ю, обращаем внимание, что id при этом = 11 и 20. В первую голову она (БД) выбирает первые 10 записей (1 - 10), потом она их переворачивает и снова выбирает первые 5 записей, но теперь с конца (10 - 5), после этого мы их ставим в правильном порядке (5-10), куда как раз эти id = 11 и id=20 и попадают.
Самый первый селект вроде как лишний?
он пересортировывает назад у него
все равно при <10 записях результат неверный
Да понятно, но всё равно можно было бы начать SELECT TOP 5 *. А сортировка конечного набора - фиг с ней.