Можно ли сделать "интеллектуальный" AUTO_INCREMENT?

  • Автор темы Автор темы untied
  • Дата начала Дата начала
Статус
В этой теме нельзя размещать новые ответы.
untied
Однако, тема постепенно сваливается из баз данных в офтопик, так что предлагаю закруглиться.
дело хозяйское.
лично я хотел, как раз, предложить закрыть эту тему, как бессмысленную в свете поиска решения средствами базы данных, и открыть новую, для обсуждения не криворуких способов решения проблемы.
но если ты считаешь, что обсуждать здесь нечего, то не смеем тебя задерживать.
 
если средствами мускула нужно просто до вставлять пропущенные значения, то можно так

$startId= 100;
$query="
SELECT a.i,

(case when isnull(b.title) then 'ваша ссылка могла быть здесь' else b.title end) as t
остальные поля аналогично

FROM
( select $startId as i
union select $startId+1
union select $startId+2
..
union select $startId+9
)a left outer join youtable b on i=id";
 
untied
На самом деле задача к базам данных имеет очень отдалённое отношение. Вернее - никакого.

Самое простое решение: уйти от постраничной навигации по номеру страницы, а ссылки выбирать исходя из ID записи. Т.е. считаешь, сколько целых страниц есть до данного ID, а потом с лимитом делаешь выборку.
 
В СУБД, где по каким-то причинам нет полей типа AUTO INCREMENT такая функциональность реализуется через триггер. Так, что если уж ОЧЕНЬ хочется извратиться, то можно в триггере реализовать какой тебе угодно алгоритм формирования значения "по умолчанию".
Но подчеркиваю, это если охота изврата :)))
 
Автор оригинала: bgm
untied
На самом деле задача к базам данных имеет очень отдалённое отношение. Вернее - никакого.

Самое простое решение: уйти от постраничной навигации по номеру страницы, а ссылки выбирать исходя из ID записи. Т.е. считаешь, сколько целых страниц есть до данного ID, а потом с лимитом делаешь выборку.
А каким образом можно посчитать, сколько целых страниц до данного ID? :confused: При условии, что ID создается автоинкрементом, и какие-то записи могут быть удалены... :confused:
Пожалуй, это не самое простое решение, а самое странное из предложенных...

Сергей Тарасов, да, да! Извратиться ОЧЕНЬ хочется!!!
Каким образом можно реализовать в триггере алгоритм формирования значения по умолчанию?
 
untied
А подумать? Намекаю: ID создаются автоинкрементом, т.е. могут быть отсортированы по возрастанию. Соответственно можно посчитать количество ID, которые меньше выбранного. И, какое удивление, разделить его на количество ссылок на странице. А потом обычный лимит.
 
Автор оригинала: bgm
untied
А подумать? Намекаю: ID создаются автоинкрементом, т.е. могут быть отсортированы по возрастанию. Соответственно можно посчитать количество ID, которые меньше выбранного. И, какое удивление, разделить его на количество ссылок на странице. А потом обычный лимит.
Не годидзе!
Возникает ровно та же проблема с перескоком ссылок со страницы на страницу при удалении идущих ранее по списку.
 
untied

Да как тебе хочется, так и извращайся. Делаешь триггер на BEFORE INSERT к примеру и делаешь с NEW.`id` все, что тебе заблогорассудится.
 
untied
Ёлы-палы. У тебя нет понятия номера страницы, понимаешь? И нет ссылки на страницу. А вот отображение страницы по ID одной из ссылко на ней - есть. Понимаешь?

А от "перескока" (т.е. изменения внешнего вида) ты никак всё равно не избавишься.
 
Автор оригинала: bgm
untied
Ёлы-палы. У тебя нет понятия номера страницы, понимаешь? И нет ссылки на страницу. А вот отображение страницы по ID одной из ссылко на ней - есть. Понимаешь?

А от "перескока" (т.е. изменения внешнего вида) ты никак всё равно не избавишься.
Не понимаю! :)
Исторически сложилось так, что номера страниц у меня есть.
Для примера:
w w w.nech.ru/useful/lnk_sitlist.html?g_id=5
Номера страниц просто надо выводить.

От перескока ссылок я уже избавился, несколько кривым методом, но работающим.
 
bgm
но задача состоит именно в избавлении от перескока ссылок.
и интересно её решить.поскольку задача реальная и обоснованная

вот только стремление автора решить её исключительно кривыми методами - огорчает.
 
OFF:
*****, отнюдь!
Если б я действительно хотел кривых методов, я б успокоился на достигнутом и ничего бы здесь не спрашивал. ;)
 
untied
Ну так избавься от того, что исторически сложилось :)
Ведь тебе что надо - чтобы по ссылке на страницу у владельца ресурса всегда показывалась именно та страница, где расположена его ссылка. Правильно? Значит самый прямой способ - это страницу рассчитывать исходя из ID ссылки, а не номера самой страницы.

P.S. Не надо кривым методом избавляться. Надо думать и правильно решать задачу :)
 
*****
Как я понимаю задача состоит в том, чтобы по ссылке владелец ресурса видел ту страницу, где ссылка на его ресурс. Разве нет?
 
Автор оригинала: bgm
untied
Ну так избавься от того, что исторически сложилось :)
Ведь тебе что надо - чтобы по ссылке на страницу у владельца ресурса всегда показывалась именно та страница, где расположена его ссылка. Правильно? Значит самый прямой способ - это страницу рассчитывать исходя из ID ссылки, а не номера самой страницы.
Ты бы мой линк открыл и посмотрел...
Помимо того, что ссылку надо правильно показать владельцу, ее надо показать поисковому роботу, сканирующему сайт и живому посетителю сайта, который (вдруг!!!) надумает заглянуть в каталог ссылок.
И про то, что URL страницы со ссылкой должен быть один для всех вариантов я тоже уже писал (см. дикуссию выше).
 
не совсем
надо, чтобы при _стандартной_ процедуре просмотра страниц сайта была видна ссылка.
чтобы не спецюадрес давался хозяину ссылки, а обычный.
 
Автор оригинала: *****
bgm
а как ее рассчитывать?
вот я придумать не могу.
1) Считаем, сколько ссылок всего есть до данного ID
2) Считаем, сколько есть целых страниц до данного ID
3) Делаем обычный лимит
Нет?
 
а вообще, че-то я подзабыл свою ненависть ко всем этим каталогизаторам-оптимизаторам, которые дерьмом весь инет загадили - ничего стоящего не найти. только эти самые ссылки на ссылки.
прикрыть, наверное, надо.
хай мучается.
 
OFF:
Ф., я не оптимизатор (их я тоже не люблю). Просто приходится вертеться, чтоб сайт хоть как-то где-то был виден.

Сергей Тарасов, спасибо за идею!
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху