Автор Тема: Присвоение новых ИД  (Прочитано 4613 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Sniper

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 86
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.40000.ru
Присвоение новых ИД
« : 22 Декабря 2002, 16:31:04 »
У меня есть MYSQL таблица,  вней несколько записей.
У каждой записи есть поле с автоинкрементным ИД.

Проблема: Если удалить какую-нибудь из записей.
То с номерами ИД получается некрасиво: номера не подряд идут. То есть если удалили запись с ИД = \'5\' , то в таблице не будет этого ИД. А мне надо подряд, потому как скрипт у меня есть, к-ры выбирает случайное число из диапазона, где диапазон - количество записей в таблице. Если некоторых ИД не будет, то скрипт ничесго не выберет.

Возможно ли после удаления записи как нибудь пересортировывать ИД. Чтобы они были подряд.
Пока играет музыка - танцуй...

Оффлайн fidget

  • Непоседа
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 607
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Присвоение новых ИД
« Ответ #1 : 22 Декабря 2002, 17:44:49 »
> Возможно ли после удаления записи как нибудь пересортировывать ИД. Чтобы они были подряд.

Не думаю что есть в этом большая необходимость. ИД генерится уникальным и нужен только для того, что бы идентифицировать запись в таблице. Красиво или не красиво тут никаким боком лежать не должно. А если тебе красиво записи потом из таблицы вывести нужно, то это делай с помощью своего скрипта/программы и т.д.
На Машине Тьюринга далеко не уедешь.

Оффлайн Sniper

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 86
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.40000.ru
Присвоение новых ИД
« Ответ #2 : 23 Декабря 2002, 11:07:53 »
fidget
Если бы ты внимательно прочел вопрос, то, возможно, понял бы зачем мне это нужно.

Цитировать
Если некоторых ИД не будет, то скрипт ничесго не выберет.
Пока играет музыка - танцуй...

Оффлайн Metaller

  • Мелкое злобное существо
  • Ветеран
  • *****
  • Сообщений: 538
  • +0/-0
  • 2
    • Просмотр профиля
    • http://michael.pp.ru
Присвоение новых ИД
« Ответ #3 : 23 Декабря 2002, 11:16:45 »
Цитировать
fidget
Если бы ты внимательно прочел вопрос, то, возможно, понял бы зачем мне это нужно.

Вообще-то, Fidget - "она". Это раз.


А во-вторых - надо писать нормально скрипты и учить SQL - тогда таких вопросов не возникнет.
Everybody\'s Got A Ticket To Ride Except For Me And My Lightning...

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Присвоение новых ИД
« Ответ #4 : 23 Декабря 2002, 12:10:34 »
Sniper
Можно. Только это идиотизм - использовать автоинкрементное поле для упорядоченной выборки.
А количество записей в таблице можно получить вообще не отталкиваясь от последнего значения ID.
Да и задачка твоя решается без использования упорядоченного списка всего двумя запросами к базе.
Задачка-то для решения в уме :)
[off]Ничего личного[/off]
AS IS...

Оффлайн Sniper

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 86
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.40000.ru
Присвоение новых ИД
« Ответ #5 : 23 Декабря 2002, 13:13:45 »
fidget - Sorry!
Цитировать
Вообще-то, Fidget - "она". Это раз




Цитировать
Да и задачка твоя решается без использования упорядоченного списка всего двумя запросами к базе.

А можно подробнее?Metaller




Metaller
Так для того я сдесь и задаю вопросы - чтобы научиться "нормально" скрипты писать.
Пока играет музыка - танцуй...

Оффлайн Metaller

  • Мелкое злобное существо
  • Ветеран
  • *****
  • Сообщений: 538
  • +0/-0
  • 2
    • Просмотр профиля
    • http://michael.pp.ru
Присвоение новых ИД
« Ответ #6 : 23 Декабря 2002, 13:17:51 »
Если тебе нужно число записей - то
SELECT COUNT(*) as ChisloZapisey FROM tralala

Если нужно выбрать случайную запись -
SELECT * FROM tralala ORDER BY RAND() LIMIT 1
Everybody\'s Got A Ticket To Ride Except For Me And My Lightning...

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Присвоение новых ИД
« Ответ #7 : 23 Декабря 2002, 13:22:18 »

SELECT COUNT(id) FROM tablename;

Потом выбираешь случайное число из диапазона 1..COUNT(id)
Второй запрос:

SELECT * FROM tablename ORDER BY id ASC LIMIT <полученное число>,1

Вот так, например.
Как один из вариантов.
У меня эта конструкция работает нормально.
AS IS...

Оффлайн Sniper

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 86
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.40000.ru
Присвоение новых ИД
« Ответ #8 : 23 Декабря 2002, 17:43:58 »
Спасибки!
Пока играет музыка - танцуй...

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
Присвоение новых ИД
« Ответ #9 : 24 Декабря 2002, 08:06:56 »
ThE0ReTiC, твоя штука работать не будет...
Sniper, я тож бился над этой проблемой смотри
http://forums.webscript.ru/showthread.php?s=&threadid=7740&highlight=%E2%FB%E1%F0%E0%F2%FC+%F1%EB%F3%F7%2A
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Присвоение новых ИД
« Ответ #10 : 24 Декабря 2002, 11:49:04 »
Alexandr
А тебе больше скажу - она (штука) во всю работает, так что твое заявление несколько опрометчиво :)
AS IS...

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
Присвоение новых ИД
« Ответ #11 : 24 Декабря 2002, 12:33:28 »
Да, точно.
Попутал малость.
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28