Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
Подскажите, пожалуйста, как реализовать Задачка следующая: Был список 100 позиций, т.е. с первого по сотый номера заняты. Потом удалили с десятого по двадцатый. И эти номера освободились. Далее при добавлении нумерация продолжится 101,102,103 и т.д. Требуется заполнить номера с 10 по 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2009, 16:23 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
1) Делаешь запрос SELECT id FROM table where id BETWEEN 10 AND 20 2) Смотришь, если ли записи 3) Если есть, берешь первый выбранный id 4) Состовляешь INSERT, если был найден id из пункта 3 то принудительно вставляешь его в запрос INSERT, если нет то как обычно NULL вместо id Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2009, 16:44 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
table1 и table2 не нужно, это всё одна табличка, ошибся случаем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2009, 16:46 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
phpTeach, это просто а как быть, если интервал не известен? это я для примера привёл 10 и 20 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2009, 16:46 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
telalТребуется заполнить номера ...Предлагаю не заниматься такой ерундой. Желание делать это с большой вероятностью говорит либо о неправильном проектировании БД, либо о неправильном проектировании всей разрабатываемой системы. Если вы все-таки настаиваете, то учтите, что, на мой взгляд, не существует надежного способа занятия пропущенных номеров без блокировки всей таблицы, что не может не сказаться на производительности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2009, 17:05 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
telalphpTeach, это просто а как быть, если интервал не известен? это я для примера привёл 10 и 20 Извините, а смысл таких манипуляций в чем заключается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2009, 17:06 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
Я тоже не вижу смысла в данной манипуляции, но по вопросу о неизвестности интервала могу предположить, что при удалении вы всё же можете сохранять информацию о id которых удаляете ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2009, 17:15 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
кстати пока читал в голове возник вопрос не подскажите как организовать Pivot в mysql? аналог ораклового select level rn from dual connect by level <= 10 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2009, 17:42 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
alecseyкстати пока читал в голове возник вопрос не подскажите как организовать Pivot в mysql? аналог ораклового Код: plaintext Но повторить результат можно с помощью переменных и большой таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2009, 17:47 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
javasoft, Это желание заказчика. Все id из таблицы выводятся в графическое отображение. Соответственно, он эти id использует для поиска. Он хочет, чтобы не было пробелов среди номеров этой таблицы. Ложные номера по порядку я не вижу смысла отображать, так как говорил ранее, они используются для поиска ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2009, 17:49 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
phpTeach, я думал, что это можно сделать sql. Но по всей видимости буду использовать возможности языка программирования ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2009, 17:52 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
telalя думал, что это можно сделать sql.Да сделать-то можно. Но не нужно навешивать на суррогатный первичный ключ функциональность, ему несвойственную. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2009, 17:58 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
miksoftНо повторить результат можно с помощью переменных и большой таблицы.эт понятно =) я думал малоли ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2009, 17:59 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
telaljavasoft, Все id из таблицы выводятся в графическое отображение. Соответственно, он эти id использует для поиска. Он хочет, чтобы не было пробелов среди номеров этой таблицы. Ложные номера по порядку я не вижу смысла отображать, так как говорил ранее, они используются для поиска Строки номеруй не зависимо от id, а по порядку, ну а если надо редактировать или вывести информацию конкретного пользователя из интерфейса давай ссылку соответственно в виде ?user_id={Идентификатор} ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2009, 18:16 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
phpTeach, Строки номеруй не зависимо от id, а по порядку по какому порядку? если кто не в курсе - в sql нет понятия "номер строки". Можно, конечно, добавить поле "типа_номер" в таблицу и сделать апдейт (переменными), чтобы новые номера по порядку первичного ключа встали. А потом повесить триггеры на добавление и удаление записей, как-то запретить изменение этого поля... Действительно, telal , оно Вам надо? Впрочем, если заказчик в данном случае ещё и хочет искать по id... то он маньяк. Вы спросите, что он захочет увидеть, когда САМ удалит чего-нибудь из "середины" списка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2009, 19:02 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
tanglir, ORDER BY id и будет тебе номер строки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2009, 19:17 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
phpTeach, откуда он будет, если ид-шек с 10 по 20ю нет? Выведешь ты список с "нумерацией"(ну на клиенте в датасете посчитаешь номер строки, например), а потом заказчик возьмёт и удалит с третьей по восьмую. Выведешь список заново, но под старыми номерами будут лежать другие данные . Кто виноват? Номера-то нужны без разрывов - читаем посты ТС выше! PS. И вообще, спор "ниачём": если заказчик принципиально настаивает на своём бзике - сделать, разъяснив последствия и потребовав письменного подтверджения, что он понял, что может произойти ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2009, 19:28 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
tanglir, Номер строки и идентификатор пользователя разные сущности ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2009, 20:07 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
Спасибо большое за рассуждения, но кто-нибудь может резюмировать всё изложенное? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2009, 21:11 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
Ты еще раз объясни подробнее, для чего тебе нужно чтобы id шли последовательно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2009, 21:15 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
Это желание заказчика. Все id из таблицы выводятся в графическое отображение. Соответственно, он эти id использует для поиска. Он хочет, чтобы не было пробелов среди номеров этой таблицы. Ложные номера по порядку я не вижу смысла отображать, так как говорил ранее, они используются для поиска 1) Ты пишешь что в номерах не должно быть пробелов, но после удаления пробелы все равно будут пока не заполнятся 2) Как ты хочешь чтобы заполнялись пробелы после удаления, сново добавляемыми записями или последние старые записи хочешь чтобы переместились на пробелы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2009, 21:27 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
Я бы сделал так: Код: plaintext 1. 2. 3. 4. 5. 6. Ведь вырвав страницу из блокнота ты же не будешь вставлять на место вырванных страниц новые ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2009, 21:40 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
phpTeach, Вы всё правильно перечислили. нет смысла сдвигать id на пустые места, таблица может быть связана по этому ключу и может нарушиться целостность данных. Думаю, нужно именно заполнять пропущенные id ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2009, 21:56 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
telal, 1. категорически присоединяюсь к всем предыдушим орателям на предмет не надо играться с ИД, не надо!, Фу, бяка, не трожь, брось немедлено :-))) Кто-нибудь увидит, в лучшем случае посмеются, в худшем случае обругают матом 2. Желание клиента -- закон, он деньги платит, кушать всем хочется, что делать? Елементарно: Создать дополнительное поле special_id, при инсертед записывать туда ВСЕ что заблагорасудится заказчику, хоть день рождения его тещ. 3. найти пробел в списке: /topic/585423 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2009, 21:58 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, я покопался в сети и наткнулся на запрос, который получает пропуски всех чисел в заданной последовательности, но проблемка, он написан на T-sql. Пожалуйста, помогите переработать его declare @i int; SELECT @i = MAX(pkid) FROM t1; WITH tmp (gapId) AS ( SELECT DISTINCT a.pkid + 1 FROM t1 a WHERE NOT EXISTS( SELECT * FROM t1 b WHERE b.pkid = a.pkid + 1) AND a.pkid < @i UNION ALL SELECT a.gapId + 1 FROM tmp a WHERE NOT EXISTS( SELECT * FROM t1 b WHERE b.pkid = a.gapId + 1) AND a.gapId < @i ) SELECT gapId FROM tmp ORDER BY gapId; я так понимаю конструкции WITH ... AS в mysql нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2009, 12:11 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
Мне кажется, что этот запрос выводить только числа, промежутки которых составляют только единицу. Скажем, если числа 1, 2, 3, 5, 6, 8, то он выведет 4 и 7 А если 1, 5, 9, 103, то он ни чего не выведет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2009, 12:47 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
Думаю, этот запрос отобразит, к примеру, в последовательности 1,2, 4, 6, 7, 9 числа 1,3,5,8 а в последовательности 1, 2, 7, 15, 16, 28, только 3, 8, 17, а не все промежутки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2009, 12:51 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
telal, Я так думаю, что вашему клиенту до фонаря что это будет за id. Может вам поможет просто вывод нумерации строк. Вот как тут описано ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2009, 13:28 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
javasoft, Не, нумеровать мне не надо, мне нужно найти отсутствующие числа в последовательно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2009, 13:39 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
telal, Вы пропустили мой пост выше с линком? ............... 3. найти пробел в списке: /topic/585423 Там как минимум 2-3 рабочих варианта..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2009, 15:53 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
javajdbc, Я не пропустил, одна задачка находит промежутки в последовательности: к примеру: 1, 2, 5, 8, 15 находит только 3,6,9 А мне нужно найти 3,4,6,7,9,10,11,12,13,14 Вы видите разницу в результате? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2009, 17:04 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
А зачем вам находить все последовательности, если дальнейшая работа всё равно будет идти не в БД, а в сторонней программе, кмк, задачу можно свести к нахождению интервалов, а потом уже ласково инсертить по ним. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2009, 17:35 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
MAPA3OTО, вернулась, пропащая душа :) А я уж призадумался, куда MAPA3OT делся... P.S. Прошу прощения за оффтопик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2009, 17:37 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
Интервал можно найти например так: типа код Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. miksoft, слухи о мой кончине сильно приувеличины ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2009, 17:46 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
обкосячился :( Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2009, 17:50 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
javajdbc, легче будет сделать такой код как у меня проверяющий пропущенные id. Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Так вы не потеряете порядок) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2017, 09:13 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
Terrychan, на даты постов посмотри :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2017, 10:59 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
вадя, Мдааа чет они давно создали.... Ну я опоздал но мой вариант ответа вроде правилен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2017, 16:22 |
|
||
|
Заполнение ранее удалённых id
|
|||
|---|---|---|---|
|
#18+
TerrychanТак вы не потеряете порядок)Как раз-таки потеряете. Сортировки нету. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2017, 20:04 |
|
||
|
|

start [/forum/topic.php?all=1&fid=47&tid=1830821]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 370ms |

| 0 / 0 |
