Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

Почему нумерация 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, 13:54   #2
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 270
Репутация: 10
По умолчанию

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

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


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

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

а если так?

Код:

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, 14:28   #4
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 270
Репутация: 10
По умолчанию

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

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

Он просто отказывается нумеровать строки по порядку, вывод те номера строк, которые до сортировки стоят и все, без 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, 18:19   #6
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 270
Репутация: 10
По умолчанию

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


04:51.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru