Этот баннер — требование Роскомнадзора для исполнения 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 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=77&tid=1830821]: |
0ms |
get settings: |
12ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
29ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 240ms |
| total: | 384ms |

| 0 / 0 |
