_Korn, как выглядит запрос, возвращающий две соседние по ordery записи?
_Korn, как выглядит запрос, возвращающий две соседние по ordery записи?
null
если вклинивать, то айдишники записей, между которыми вклиниваем извесны
если надо просто найдти две сосоедние
то тут 2 запроса
SELECT id FROM photo WHERE order > $current_order ORDER BY order LIMIT 1 - следующая запись
SELECT id FROM photo WHERE order < $current_order ORDER BY order DESC LIMIT 1 - предыдущая
$current_order это ордер теущей записи
ок. ясноOriginally posted by _Korn+Mar 22 2007, 13:28-->Да. Достаточно и одного.null
если вклинивать, то айдишники записей, между которыми вклиниваем извесны
<!--QuoteBegin-_Korn@Mar 22 2007, 13:28
[b]null
если надо просто найдти две сосоедние
то тут 2 запроса
SELECT id FROM photo WHERE order > $current_order ORDER BY order LIMIT 1* - следующая запись
SELECT id FROM photo WHERE order < $current_order ORDER BY order DESC LIMIT 1 - предыдущая
$current_order это ордер теущей записи
DELPHIna, я не прав. Делайте как говорит дядя _Korn. Так будет проще.
хорошо....я можно сказатьименно так и делала....правда выражалась небось криво....
_Korn - спасибо...за разъяснения...отстояли Вы свой способ решения....и он по мне так проще намного.
P.S. а можно небольшое разъяснение:вот есть галерея фоток:
1 2 3
4 5 6
7 8 9
10 - -
под каждой фоткой у меня выпадающий список с выбором (ordery) от 1 до 10
если я новую вставляю...например на 8 место...то всё понятно: новая становиться 8_ой, а все за ней смещаются и получается так:
1 2 3
4 5 6
7 8 9
10 11 -
то как лучше сделать
если я хочу 6 например сделать 8(ну типа по центру разместить)???
нужно 7 сделать 6, 8 - седьмой(7), а на место 8 поставить шестую(6) ???
или как то по другому?
если так то что же делать с последней в галереи?
и я хочу поменять местами 9 и 10??? куда смещаться 10??? всего то фоток в галерии 10.... мне не нужно чтобы 10 стала 11....
вот как то не понятно чего User хочет на самом деле.... скажите что мне ему сказать то???? или как переделать алгоритм подмены местами фоток чтобы не глючно это было....
угу. если к формочке добавления фотки закидывать еще и все айди остальных фоток работать будет. очередной велосипед тобой успешно изобретен. В итоге что же у нас получается: увеличение размера страницы, необходимость использования хранимых процедур, чтобы все-таки получить выигрыш, кеширование, чтобы сократить проигрыш при выборке всех фоток, усложнение кода и все ради чего?? чтобы получить небольшой выигрыш в редкоиспользуемой операции в замен проигрыша в частоиспользуемой -- не слишком ли много велосипедов?? начинай их продавать )))Вставлять надо не после, например, "двенадцатого", а после записи с конкретным id. В передать эти id в интерфейс не сложно, не так ли? Тогда нужно четыре запроса изменяюшие две, и добавляющие одну строку, как я и написал.
_Korn
да. простейшие запросы в духе такого, как я написал выше.
DELPHIna
если у тебя много свободного времени и энтузиазма, то пропробуй сделать как порекомендовал
null -- во всяком случае это хорошая практика ))
ну так сделай если не веришь на слово )) потом ознакомишь нас с кодом и результатами. хотя не вижу особого смысла, если ты сам признаешь, что..Хочу проверить. Давай проверим? Сделаем галереи На MySQL > 5 и php5 (ну можно и на 4). Есть время?
Вобще это мне очень напомнило случай, когда я в приведенном мной на одном форуме коде (на С++) для проверки числа на четность использовал "if(i%2)...". А один тамошний форумчанин, тоже великий оптимизатор, начал кричать, мол, где тебя такого учили, все знают, что нужно писать "if( !(i & 1) )...". Закончилось тем, что это проверили, и оказалось, мой вариант отработал быстрее -- просто любой нормальный компилятор все эти вещи видит и знает как корректнее оптимизировать. Так и здесь - есть реляционная бд, вот и используйте подходы реляционных бд, которые уже итак максимально отлажены и оптимизированы, а не избретайте свои, а потом думайте как их оптимизировать. Или напишите свою бд с подходящей структурой организации данных )) Вопрос сродни "Таблицы vs дивы"но зато выборка с сортировкой значительно быстрей, чем у списка. А это таки самая частая операция, как ни крути. Так что можно сделать и так, как предлагает дяденька _Korn