Модераторы: skyboy

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> вставить запись в начало БД 
:(
    Опции темы
artsb
Дата 21.9.2008, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: нет
Всего: 64



Всем привет.

Как можно вставлять записи в БД не в конец. а в начало? У меня среди полей есть поле со свойством autoincrement. Нужно, чтобы при добавлении новой записи в БД это поле у неё становилось равным '1', а все остальные увеличивались на 1. Это возможно.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
Sunvas
Дата 21.9.2008, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 1
Всего: 89



Мне кажется такое невозможно, поскольку в PMA нет такой функции. Что касается твоей проблемы, то все просто:
1. Убери autoincrement с поля
2. Перед вставкой записи делай запрос:
Код

UPDATE `table` SET `id`=`id`+1

3. Вставляй запись:
Код

INSERT INRO `table` (`id`,...) VALUES (1,...)



--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
artsb
Дата 21.9.2008, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: нет
Всего: 64



Спасибо.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
skyboy
Дата 21.9.2008, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



artsb, стой-стой-стой. не делай так. ты знаешь, что самое тяжелое при вставке - не запись данных, сама по себе, а создание всех связанных индексов? ты собираешься пересоздавать значение индекса для всех записей. это очень, очень затратно даже при небольшом количестве записей. кроме того, очень, очень глупо. если тебе надо сделать обратный значению первичного ключа порядок, тебе надо просто добавить в запрос
Код

ORDER BY id DESC

и все

Добавлено через 54 секунды

M
skyboy
не имеющая ни прямого, ни косвенного отношения к РНР, тема перенесена из раздела "РНР: Общие вопросы"

PM MAIL   Вверх
Sunvas
Дата 21.9.2008, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 1
Всего: 89



skyboy, ты вобщем-то прав, но могут быть другие мотивы поступать именно так, как хочет ТС. Поэтому я могу понять 
artsb-а.


artsb, действительно, опиши зачем тебе такое надо.


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Akina
Дата 21.9.2008, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Sunvas, нет таких мотивов. За исключением полного непонимания принципов существования БД.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Sunvas
Дата 21.9.2008, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 1
Всего: 89



Akina, почему же нет? Есть. Приведу пример.
Допустим есть две таблицы: категорий и новостей. Возьмем самую элементарную структуру: категории - поля id(int) и title(varchar) (ИД и заголовок соответственно), а новости - id(int), cid(int), title(varchar), status(int) (ИД, ИД категории, заголовок новости, идентификатор активности новости). Задача: за минимум запросов извлечь по три последние активные новости из каждой категории.

Решение задачи сводится к созданию в таблице новостей еще одного поля num(int). Тогда, перед добавлением новости нужно будет выполнить запрос:
Код

UPDATE `news` SET `num`=`num`+1

А в добавляемой новости ставить num=0. Тогда, чтобы извлечь по три последние новости из БД, просто выполним запрос:
Код

SELECT n.`title`, c.`title` FROM `news` AS n INNER JOIN `categs` AS c ON n.`cid`=c.`id`WHERE n.`num`<3


Если сможете предложить идею лучше - буду только рад.

Это сообщение отредактировал(а) Sunvas - 22.9.2008, 12:08


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
bars80080
Дата 22.9.2008, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 5
Всего: 315



лучше? я в любую таблицу всегда вставляю поле date int в которое пишу время вставки записи. последние три новости: 
... order by date desc limit 3
и кстати, для новостей дата по-любому нужна, а для остальных таблиц - это просто полезная штука по которой можно узнать дату вставки
PM MAIL WWW   Вверх
Akina
Дата 22.9.2008, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Цитата(Sunvas @  22.9.2008,  00:59 Найти цитируемый пост)
Если сможете предложить идею лучше - буду только рад. 

Идея есть. Не дурите автору топа голову. У него поле - автоинкремент, по-видимому оно же еще и ключ. Его назначение - идентификация записи и использование подсистемой обеспечения целостности, посему руками туда лезть категорически возбраняется. А вы про какие-то там новости... 

Давайте-ка мух налево, котлеты направо. Да, для обычных полей может быть все что угодно... и то с осторожностью. Даже в случае с теми же новостями - если новости не выносить в архив, то добавление очередной новости будет сопровождаться определенными тормозами. А если логика потребует это доп. поле сделать индексированным - то весьма ощутимыми тормозами.




--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
skyboy
Дата 22.9.2008, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



Цитата(Sunvas @  21.9.2008,  22:59 Найти цитируемый пост)
Если сможете предложить идею лучше - буду только рад. 

если уж оооочень влом размещать поле для хранения даты добавления, как вполне резонно предлагает 
bars80080, можешь сделать так:
Код

ORDER BY `id` DESC
LIMIT 3

PM MAIL   Вверх
Sunvas
Дата 22.9.2008, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 1
Всего: 89



Цитата(Akina @  22.9.2008,  09:42 Найти цитируемый пост)
Не дурите автору топа голову.

А кто ему дурит? Я вам показываю реальный пример, когда нужно поступать так, как хочет автор. Вы попросили мотив - получите. А первичное у него поле или нет - он не сказал, поэтому сидим тут и гадаем на кофейной гуще. Кроме этого я сказал снять autoincrement с поля.


bars80080, skyboy, и что даст limit 3? У меня проблема извлечь ПО 3 последние новости из каждой категории; новости могут добавляться в категории неравномерно. Кроме того, количество категорий неизвестно.

Это сообщение отредактировал(а) Sunvas - 22.9.2008, 11:41


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Akina
Дата 22.9.2008, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Цитата(Sunvas @  22.9.2008,  12:40 Найти цитируемый пост)
Я вам показываю реальный пример, когда нужно поступать так, как хочет автор. 

Нужно? вот уж вряд ли... Можно - и то под вопросом. Если писАть приложения так, как удобно пишущему - оно работать будет скорее всего так себе.

Цитата(Sunvas @  22.9.2008,  12:40 Найти цитируемый пост)
У меня проблема извлечь ПО 3 последние новости из каждой категории; новости могут добавляться в категории неравномерно. Кроме того, количество категорий неизвестно.

Получите сначала их подзапросом - какие проблемы?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Sunvas
Дата 22.9.2008, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 1
Всего: 89



Цитата(Akina @  22.9.2008,  11:53 Найти цитируемый пост)
Если писАть приложения так, как удобно пишущему - оно работать будет скорее всего так себе.

Давай-те не будем гадать на кофейной гуще. Придет автор - сам расскажет что хотел. Я лишь защищаю свой вариант.


Цитата(Akina @  22.9.2008,  11:53 Найти цитируемый пост)
Получите сначала их подзапросом - какие проблемы?

И что дальше? - Циклически вытаскивать по три новости из каждой категории?  smile 


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Akina
Дата 22.9.2008, 12:51 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Цитата(Sunvas @  22.9.2008,  13:07 Найти цитируемый пост)
И что дальше? 

По-моему, очевидно - ... where id in (select top 3 ...)


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Sunvas
Дата 22.9.2008, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 1
Всего: 89



Akina, пожалуйста приведите полный запрос, а то не совсем понял.


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Закрытая темаСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0658 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.