![]() |
|
Модераторы: skyboy |
![]()
|
|
| artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: нет Всего: 64 |
Всем привет.
Как можно вставлять записи в БД не в конец. а в начало? У меня среди полей есть поле со свойством autoincrement. Нужно, чтобы при добавлении новой записи в БД это поле у неё становилось равным '1', а все остальные увеличивались на 1. Это возможно. -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
| Sunvas |
|
||||
|
Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 1 Всего: 89 |
Мне кажется такое невозможно, поскольку в PMA нет такой функции. Что касается твоей проблемы, то все просто:
1. Убери autoincrement с поля 2. Перед вставкой записи делай запрос:
3. Вставляй запись:
-------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
||||
|
|||||
| artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: нет Всего: 64 |
Спасибо.
-------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
| skyboy |
|
||||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
artsb, стой-стой-стой. не делай так. ты знаешь, что самое тяжелое при вставке - не запись данных, сама по себе, а создание всех связанных индексов? ты собираешься пересоздавать значение индекса для всех записей. это очень, очень затратно даже при небольшом количестве записей. кроме того, очень, очень глупо. если тебе надо сделать обратный значению первичного ключа порядок, тебе надо просто добавить в запрос
и все Добавлено через 54 секунды
|
||||
|
|||||
| Sunvas |
|
|||
|
Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 1 Всего: 89 |
skyboy, ты вобщем-то прав, но могут быть другие мотивы поступать именно так, как хочет ТС. Поэтому я могу понять
artsb-а. artsb, действительно, опиши зачем тебе такое надо. -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Sunvas, нет таких мотивов. За исключением полного непонимания принципов существования БД.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Sunvas |
|
||||
|
Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 1 Всего: 89 |
Akina, почему же нет? Есть. Приведу пример.
Допустим есть две таблицы: категорий и новостей. Возьмем самую элементарную структуру: категории - поля id(int) и title(varchar) (ИД и заголовок соответственно), а новости - id(int), cid(int), title(varchar), status(int) (ИД, ИД категории, заголовок новости, идентификатор активности новости). Задача: за минимум запросов извлечь по три последние активные новости из каждой категории. Решение задачи сводится к созданию в таблице новостей еще одного поля num(int). Тогда, перед добавлением новости нужно будет выполнить запрос:
А в добавляемой новости ставить num=0. Тогда, чтобы извлечь по три последние новости из БД, просто выполним запрос:
Если сможете предложить идею лучше - буду только рад. Это сообщение отредактировал(а) Sunvas - 22.9.2008, 12:08 -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
||||
|
|||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 5 Всего: 315 |
лучше? я в любую таблицу всегда вставляю поле date int в которое пишу время вставки записи. последние три новости:
... order by date desc limit 3 и кстати, для новостей дата по-любому нужна, а для остальных таблиц - это просто полезная штука по которой можно узнать дату вставки |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Идея есть. Не дурите автору топа голову. У него поле - автоинкремент, по-видимому оно же еще и ключ. Его назначение - идентификация записи и использование подсистемой обеспечения целостности, посему руками туда лезть категорически возбраняется. А вы про какие-то там новости... Давайте-ка мух налево, котлеты направо. Да, для обычных полей может быть все что угодно... и то с осторожностью. Даже в случае с теми же новостями - если новости не выносить в архив, то добавление очередной новости будет сопровождаться определенными тормозами. А если логика потребует это доп. поле сделать индексированным - то весьма ощутимыми тормозами. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
||||
|
||||
| Sunvas |
|
|||
|
Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 1 Всего: 89 |
А кто ему дурит? Я вам показываю реальный пример, когда нужно поступать так, как хочет автор. Вы попросили мотив - получите. А первичное у него поле или нет - он не сказал, поэтому сидим тут и гадаем на кофейной гуще. Кроме этого я сказал снять autoincrement с поля. bars80080, skyboy, и что даст limit 3? У меня проблема извлечь ПО 3 последние новости из каждой категории; новости могут добавляться в категории неравномерно. Кроме того, количество категорий неизвестно. Это сообщение отредактировал(а) Sunvas - 22.9.2008, 11:41 -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
| Akina |
|
||||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Нужно? вот уж вряд ли... Можно - и то под вопросом. Если писАть приложения так, как удобно пишущему - оно работать будет скорее всего так себе.
Получите сначала их подзапросом - какие проблемы? -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||
|
|||||
| Sunvas |
|
|||
|
Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 1 Всего: 89 |
Давай-те не будем гадать на кофейной гуще. Придет автор - сам расскажет что хотел. Я лишь защищаю свой вариант. И что дальше? - Циклически вытаскивать по три новости из каждой категории? -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
По-моему, очевидно - ... where id in (select top 3 ...) -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Sunvas |
|
|||
|
Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 1 Всего: 89 |
Akina, пожалуйста приведите полный запрос, а то не совсем понял.
-------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
| artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: нет Всего: 64 |
Sunvas, прав. У меня будет отдельная, ни с чем не связанная, БД "Новости"
Поля: Дата | Заголовок | Содержимое | Картинка И мне понравился вариант, предложенный bars80080. Скорее всего, так и сделаю. Это сообщение отредактировал(а) artsb - 22.9.2008, 18:24 -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
| artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: нет Всего: 64 |
Просьба ко всем: поделитесь каким-нибудь справочником по mysql. А то давно не работал с БД. Простые запросы смогу составить, а вот что-то посложнее - не уверен. У меня была где-то хорошая книга, но не могу её найти.
Спасибо. -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
| Sunvas |
|
|||
|
Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 1 Всего: 89 |
artsb, рекомендую: http://doc.dubs.odessa.net/MySQL/Reference.html
-------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: нет Всего: 64 |
Sunvas, спасибо. Я как раз вчера скачал такой в формате CHM.
Akina, Спасибо. Качаю. -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
| artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: нет Всего: 64 |
Такой вопрос:
Вставляю строку так:
в надежде, что она будет храниться в таком виде: 23.09.08 А она записывается так: 2008-09-08 Как правильно преобразовать к форме, которая мне нужна? И ещё вопрос Заметил (хотя раньше читал об этом), что при удалении из БД записи полесо свойством autoincrement не обновляется, т.е. образуются "дырки". Это как-то можно исправить? -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 5 Всего: 315 |
Это сообщение отредактировал(а) bars80080 - 23.9.2008, 22:37 |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
artsb, черт. ну я же вынес новый вопрос в отдельную тему. ну, что за детство!
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |