Forum Webscript.Ru
Общие => Базы данных => Тема начата: Sniper от 22 Декабря 2002, 16:31:04
-
У меня есть MYSQL таблица, вней несколько записей.
У каждой записи есть поле с автоинкрементным ИД.
Проблема: Если удалить какую-нибудь из записей.
То с номерами ИД получается некрасиво: номера не подряд идут. То есть если удалили запись с ИД = \'5\' , то в таблице не будет этого ИД. А мне надо подряд, потому как скрипт у меня есть, к-ры выбирает случайное число из диапазона, где диапазон - количество записей в таблице. Если некоторых ИД не будет, то скрипт ничесго не выберет.
Возможно ли после удаления записи как нибудь пересортировывать ИД. Чтобы они были подряд.
-
> Возможно ли после удаления записи как нибудь пересортировывать ИД. Чтобы они были подряд.
Не думаю что есть в этом большая необходимость. ИД генерится уникальным и нужен только для того, что бы идентифицировать запись в таблице. Красиво или не красиво тут никаким боком лежать не должно. А если тебе красиво записи потом из таблицы вывести нужно, то это делай с помощью своего скрипта/программы и т.д.
-
fidget
Если бы ты внимательно прочел вопрос, то, возможно, понял бы зачем мне это нужно.
Если некоторых ИД не будет, то скрипт ничесго не выберет.
-
fidget
Если бы ты внимательно прочел вопрос, то, возможно, понял бы зачем мне это нужно.
Вообще-то, Fidget - "она". Это раз.
А во-вторых - надо писать нормально скрипты и учить SQL - тогда таких вопросов не возникнет.
-
Sniper
Можно. Только это идиотизм - использовать автоинкрементное поле для упорядоченной выборки.
А количество записей в таблице можно получить вообще не отталкиваясь от последнего значения ID.
Да и задачка твоя решается без использования упорядоченного списка всего двумя запросами к базе.
Задачка-то для решения в уме :)
[off]Ничего личного[/off]
-
fidget - Sorry!
Вообще-то, Fidget - "она". Это раз
Да и задачка твоя решается без использования упорядоченного списка всего двумя запросами к базе.
А можно подробнее?Metaller
Metaller
Так для того я сдесь и задаю вопросы - чтобы научиться "нормально" скрипты писать.
-
Если тебе нужно число записей - то
SELECT COUNT(*) as ChisloZapisey FROM tralala
Если нужно выбрать случайную запись -
SELECT * FROM tralala ORDER BY RAND() LIMIT 1
-
SELECT COUNT(id) FROM tablename;
Потом выбираешь случайное число из диапазона 1..COUNT(id)
Второй запрос:
SELECT * FROM tablename ORDER BY id ASC LIMIT <полученное число>,1
Вот так, например.
Как один из вариантов.
У меня эта конструкция работает нормально.
-
Спасибки!
-
ThE0ReTiC, твоя штука работать не будет...
Sniper, я тож бился над этой проблемой смотри
http://forums.webscript.ru/showthread.php?s=&threadid=7740&highlight=%E2%FB%E1%F0%E0%F2%FC+%F1%EB%F3%F7%2A
-
Alexandr
А тебе больше скажу - она (штука) во всю работает, так что твое заявление несколько опрометчиво :)
-
Да, точно.
Попутал малость.