Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.02.2018, 12:23   #1
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию Не сортирует столбец

Почему нумерация row идет не с нуля когда я делаю сортировку?

Код:
SELECT @rows:= @rows + 1  as rowNum, inTab.avg_request 
FROM
	(SELECT (B.log_time - A.log_time) AS avg_request
		FROM
                (SELECT * FROM apache_logs WHERE domain = 9) AS A

                INNER JOIN apache_logs AS B 
                ON B.id = (CASE WHEN (SELECT domain FROM apache_logs WHERE id = A.id + 1) = 9 THEN A.id + 1 
     			ELSE (SELECT MIN(C.id) FROM (SELECT * FROM apache_logs WHERE domain = 9) AS C WHERE C.id > A.id) END)

                WHERE A.log_time
                BETWEEN (SELECT (CASE WHEN (MAX(log_time) - MIN(log_time)) < 25920000 THEN MIN(log_time) ELSE (MAX(log_time) - 25920000) END) 
                            FROM apache_logs WHERE domain = 9) AND (SELECT MAX(log_time) FROM apache_logs WHERE domain = 9)) AS inTab,  
    (SELECT @rows := -1) as init
	ORDER BY avg_request
Можно как то добится чтобы с нуля была?
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 21.02.2018, 12:54   #2
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию

У меня вот так получается https://prnt.sc/ihq4ul
А хочу вот так https://prnt.sc/ihq5by

Как добиться?


То есть сейчас выводит порядковый номер строки, который до сортировки был

Последний раз редактировалось a.n.o.n.i.m; 21.02.2018 в 13:02.
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 21.02.2018, 13:12   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

а если так?

Код:
SELECT @rows:= @rows + 1  as rowNum, inTab2.avg_request 
FROM
(SELECT inTab.* FROM
	(SELECT (B.log_time - A.log_time) AS avg_request
		FROM
                (SELECT * FROM apache_logs WHERE domain = 9) AS A

                INNER JOIN apache_logs AS B 
                ON B.id = (CASE WHEN (SELECT domain FROM apache_logs WHERE id = A.id + 1) = 9 THEN A.id + 1 
     			ELSE (SELECT MIN(C.id) FROM (SELECT * FROM apache_logs WHERE domain = 9) AS C WHERE C.id > A.id) END)

                WHERE A.log_time
                BETWEEN (SELECT (CASE WHEN (MAX(log_time) - MIN(log_time)) < 25920000 THEN MIN(log_time) ELSE (MAX(log_time) - 25920000) END) 
                            FROM apache_logs WHERE domain = 9) AND (SELECT MAX(log_time) FROM apache_logs WHERE domain = 9)) AS inTab
	ORDER BY avg_request
) As inTab2, (SELECT @rows := -1) as init
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.02.2018, 13:28   #4
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию

Увы не то , вот скрин вашего запроса https://prnt.sc/ihqlke

А надо так https://prnt.sc/ihq5by
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 21.02.2018, 13:31   #5
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию

Он просто отказывается нумеровать строки по порядку, вывод те номера строк, которые до сортировки стоят и все, без ORDER BY avg_request где. И хз как сделать то.

Если результат этого запроса сохранить в таблицу и потом выполнить запрос такой же
Код:
SELECT inTab.avg, @rows := @rows + 1 as rowNum
              FROM (SELECT * FROM aaa) as inTab,  (SELECT @rows := -1) as init
              ORDER BY inTab.avg
то он все сделает как надо, а вот с моим отказывается напроч, понять никак не могу почему?
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 21.02.2018, 17:19   #6
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию

Решил вопрос через процедуру. Вся проблема в том что переменная почему обновляется до сортировки. Поэтому и выходит так что номера будут всегда соответствовать не отсортированным номерам строк после сортировки. На каких то таблицах обновляется, где то нет, хаотичность процесса этого не понял.
a.n.o.n.i.m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заменить столбец одной таблицы, на столбец другой Karyuudo SQL, базы данных 1 30.09.2015 16:07
Не сортирует по числам! Марина2108 Общие вопросы C/C++ 3 13.05.2012 17:41
Ошибка. НЕ МОГУ ВСТАВИТЬ столбец В ЗАДАЧУ КОТОРАЯ ВЫВЕДЕТ СТОЛБЕЦ ИЗ ЕДИНИЦ ПОСЛЕ ЧИСЛА к. Диас_ Паскаль, Turbo Pascal, PascalABC.NET 1 14.06.2011 18:49
сортирует фразу по алфавиту СИ, СИ++ Anapa Помощь студентам 1 18.02.2011 23:34
макрос который будет копировать столбец А из закрытой книги Данные, и вставлять в книгу Сток в столбец B Utirka66 Microsoft Office Excel 8 06.07.2009 09:53