Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Последовательность отображаемых строк, без order by 
:(
    Опции темы
chief39
Дата 26.1.2006, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

Репутация: 8
Всего: 77



Цитата(LSD @ 26.1.2006, 12:20 Найти цитируемый пост)

Если первым идет уникальный ключ, то сортировка не будет сравнивать все столбцы.
И вообще, что ты хотел, абсолютно произвольный набор данных, и ты хочешь получить воспроизводимые запросы и причем без затрат? Так не бывает.

Вот тут согласен.
azesmcar, гляди что получается. Тебе надо постоянное состояние таблицы(в смысле порядка сортировки с точностью до записи). Это можно(даже абстрагируясь от конкретных механизмов) решить двумя методами:
1.Сохранить состояние и отталкиваться от него.
2.Задать "неизменность" этого состояния какими-то мат. (суть реляционными) методами.
Вариант первый - это именно фетч на клиента. Но.. ну ты понял, да? Во-первых, потеря синхронизации с сервером, во вторых, время на сортировку покажется тебе временем испускания фотона по сравнению с такой перетяжкой данных.
Вариант второй - самый подходящий и обоснованный годами(сама суть реляц. БД)
Вот только требования у тебя завышенные к нему. Ты ведь не можешь узнать человека второй раз, если первого раза не было smile (Что-то наподобие дайте то, не знаю что). Пусть пересмотрят ТЗ, а то какую-то лажу с таблицами тебе подсунули. Твоя смутная догадка ( нельзя сортировать по всем столбцам. Надо лишь сохранять порядок с пред. выборки, делать всё на сервере ) ведёт к тому самому желанному ключевому полю, суть айдишке smile Трудно сказать наверняка, но я бы подгонял всё под это.


--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
azesmcar
Дата 26.1.2006, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: нет
Всего: 211



Цитата

Не нравится сортировка делай fetch по страницам.


Так я и делаю fetch по страницам..вопрос в том что запрос каждый раз выполняется...и fetch следующей страницы может выдать повторяющиейся данные или пропустить что нибудь...
Цитата

Если первым идет уникальный ключ, то сортировка не будет сравнивать все столбцы.


а если не идет? smile
Цитата

Разовьем мысль.
Если юзер не ввел сортировку, можно выполнить просмотр структуры таблицы и при наличии в ней ключевого поля подставить его без ведома юзера или спросить его и рекомендовать использовать сортировку по этому полю.


можно просто активировать эти возможности лишь в том случае если юзер указал primary key..
а в случае сортировки по какому либо полю со стороны юзера (к примеру connect_date) добавить primary key...т.е.
не
Код

select * from db_log order by connect_date

а
Код

select * from db_log order by connect_date, primary_key_field


должно сработать...сойдет мысль??? кто нибудь что нибудь добавить по этому поводу?
Добавлено @ 14:18
Цитата

и ты хочешь получить воспроизводимые запросы и причем без затрат? Так не бывает.


я не хочу без затрат..я хочу без бессмысленных затрат..скажем если к примеру юзер создал нормальный primary key, но он стоит в конце...что тогда??? затраты на сорторовку получаются бессмысленными...

Цитата

azesmcar, гляди что получается. Тебе надо постоянное состояние таблицы(в смысле порядка сортировки с точностью до записи). Это можно(даже абстрагируясь от конкретных механизмов) решить двумя методами:
1.Сохранить состояние и отталкиваться от него.


меня скорее интересует есть ли что-то типа rowid который поддерживается всеми СУБД..?
если он есть могу просто добавить в конце order by и дело с концом...чтобы не заставлять юзера вводить primary key...
PM   Вверх
LSD
Дата 26.1.2006, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 24
Всего: 538



Цитата(azesmcar @ 26.1.2006, 14:13 Найти цитируемый пост)
Так я и делаю fetch по страницам..вопрос в том что запрос каждый раз выполняется...и fetch следующей страницы может выдать повторяющиейся данные или пропустить что нибудь...

Нет. После того как ты выполнил select данные в этой выборке уже не изменятся, это статичный снимок данных и не меняется при изменении данных.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
batigoal
Дата 26.1.2006, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 1
Всего: 151



Цитата(azesmcar @ 26.1.2006, 15:13 Найти цитируемый пост)

меня скорее интересует есть ли что-то типа rowid который поддерживается всеми СУБД..?

Насколько я знаю, нет.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
chief39
Дата 26.1.2006, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

Репутация: 8
Всего: 77



Цитата(azesmcar @ 26.1.2006, 14:13 Найти цитируемый пост)

меня скорее интересует есть ли что-то типа rowid который поддерживается всеми СУБД..?
если он есть могу просто добавить в конце order by и дело с концом...чтобы не заставлять юзера вводить primary key...

Твоё творение должно работать со всеми известными СУБД с таблицами, о которых ЗАРАНЕЕ ты и представления не имеешь???
Ну и загнули тебе задачу smile
Возникает мысль написать механизм, который будет проверять наличие rowid столбца(с именем xxxxxxxxx_rowid_xxxxxxx). Пусть себе юзеры делают что угодно, создают какие угодно таблицы(ну у вас и юзеры smile ). При обращении, если такого столбца нет, он насильно создаётся твоей аппликухой. И заполняется. Если уже есть - просто работает с ним. Только придётся писать вариации под каждую СУБД.
А то фигня получается - айдишек может и не быть, таблицы - непонятно какие...

ЗЫ: если не секрет, что за предметная область такая?


--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
azesmcar
Дата 26.1.2006, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: нет
Всего: 211



Цитата

Нет. После того как ты выполнил select данные в этой выборке уже не изменятся, это статичный снимок данных и не меняется при изменении данных.


Так вопрос в том что этого статичного снимка нету...новая сессия, новый запрос...о каком снимке может идти речь? smile web-application...

Цитата

Насколько я знаю, нет.


Я тоже smile
Цитата

Твоё творение должно работать со всеми известными СУБД с таблицами, о которых ЗАРАНЕЕ ты и представления не имеешь???
Ну и загнули тебе задачу


не со всеми известными smile только в oracle i mysql...
Цитата

ЗЫ: если не секрет, что за предметная область такая?


Не секрет...smile нужно написать стандартную функцию для вывода таблицы с автоматической поддержкой сортировки и страниц в web приложениях...все намного страшнее, но проблема только в этой функции smile
Добавлено @ 15:42
Цитата

Ну и загнули тебе задачу


Кстати я сам ее себе загнул smile
PM   Вверх
LSD
Дата 26.1.2006, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 24
Всего: 538



Цитата(azesmcar @ 26.1.2006, 15:41 Найти цитируемый пост)
Так вопрос в том что этого статичного снимка нету...новая сессия, новый запрос...о каком снимке может идти речь?  web-application...

Можно конечно создать, для сессии некий персистентный объект, который будет держать курсор открытым. Но это как то через ж не по человечески.

Вообщем от сортировки тебе никуда не деться. Можно попробовать выяснить какие столбцы в таблице являются ключевыми и сортировать по ним.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
azesmcar
Дата 26.1.2006, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: нет
Всего: 211



Цитата

Можно конечно создать, для сессии некий персистентный объект, который будет держать курсор открытым. Но это как то через ж не по человечески.


smile
ага...вообще то можно, но я так перестал делать, когда открыл сессии в оракле и увидел список не закрытых сессий smile если человек не делает logout а просто закрывает окно, сессия остается висеть до тех пор пока кому нибудь вроде меня не вздумается ее убить! smile

Цитата

Вообщем от сортировки тебе никуда не деться. Можно попробовать выяснить какие столбцы в таблице являются ключевыми и сортировать по ним.


Наверно это и есть единственный спосос...точнее не выяснить (чтобы не морочиться с базами) а попросить юзера ввести..он у нас добрый..введет если приспичило таблицу отсортировать...
а в остальных случаях отключить возможность и дело с концом...думаю все... smile
PM   Вверх
LSD
Дата 26.1.2006, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 24
Всего: 538



Цитата(azesmcar @ 26.1.2006, 16:40 Найти цитируемый пост)
вообще то можно, но я так перестал делать, когда открыл сессии в оракле и увидел список не закрытых сессий

Для сессии в Oracle можно задать период неактивности, после которого она завершается. Или написать job который будет их прибивать. А вообще это задача сервера приложений следить за тем, чтобы по таймауту прибивать неактивные пользовательские сессии, например как у нас на форуме.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | СУБД, общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0747 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.