Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Войти
 
Страницы: 1
RSS
Переворот столбцов
 
Как одной строкой запроса получить из таблицы один и тот же столбец  дважды - в прямом и обратном порядке.
Например:
id | id
--------
1 | 9
3 | 8
6 | 6
8 | 3
9 | 1
 
через UNION. Используй ASC/DESC
 
2 ZzZzZzZ  
через union он получит только так:
id
---
1
3
6
8
9
9
8
6
3
1
А это не совсем то что нужно ему, как я понимаю...
 
Это "любимая" проблема, которая известна под наименованием "нумерация строк" результата. Дело в том, что для решения данной проблемы следует связать таблицу саму с собой, используя в качестве ключа номер строки в полученном результате. В общем случае, на языке TSQL такого сделать нельзя. Однако проблема переодичеси встает и есть всевозможные заплатки для ее решения.
     1. Самое простое - в большенстве баз данных (В MS-SQL и Oracle - точно) есть внутренние переменные позволяющие определить этот номер. Мало того, он может быть использован в запросе как значащее поле. Какая у Вас база .... я мог бы посмотреть... без гарантии успеха, но попробовать можно.
    2. Очень плохой, но всегда работающий вариант: можно написать функцию, которая будет получать на входе ID, перебирать строки высчитывая его порядковый номер, потом разворачивать запрос и отсчитывать столько же строк с конца ..... только тормоза будут такие, что .... мммм - не советую.
 
на ум приходит только это страшилище

Код
CREATE TABLE asc_num(
   id INT NOT NULL AUTO_INCREMENT,
   id_data INT
   );

CREATE TABLE desc_num(
   id INT NOT NULL AUTO_INCREMENT,
   id_data INT
   );

SELECT NULL, id
INTO asc_num
FROM mytable
ORDER BY 1;

SELECT NULL, id
INTO desc_num
FROM mytable
ORDER BY 1 DESC;

SELECT asc_num.id_data, desc_num.id_data
WHERE asc_num.id=desc_num.id
ORDER BY asc_num.id
 
Он просил "одной строкой" ....
 
тогда можно со вложенными запросами и последовательностями (правда, только в oracle, или же создать последовательности в других бд, если позволит скриптовый язык)
тогда будет в одну строку
 
Почему только Оракл??? MSSQL тоже великолепно поймет .... но один черт - такие расклады лучше в фукцию .... я уже писал выше ....
Страницы: 1
Читают тему