Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Добавление новой записи с наращиванием индекса
 
 автор: durable   (17.07.2009 в 17:24)   письмо автору
 
 

Есть таблица объявлений. Каждое объявление имеет свой id и уникальное поле weight для сортировки (чем вес больше тем выше других объявление отображается в списке при выводе). Каждое новое объявление должно иметь самый большой вес.

Пробовал вот так:

INSERT INTO `advert` VALUES ('', (SELECT MAX(adv_weight) FROM `advert`)+1,'Заголовок', 'Текст', NOW());


Не получается. Можно решить одним запросом?

  Ответить  
 
 автор: Valick   (17.07.2009 в 17:27)   письмо автору
 
   для: durable   (17.07.2009 в 17:24)
 

чем не устраивает сортировка по id или по времени добавления/редактирования?
или вес ранее добавленных сообщений будет меняться?

  Ответить  
 
 автор: Trianon   (17.07.2009 в 17:42)   письмо автору
 
   для: Valick   (17.07.2009 в 17:27)
 

>или вес ранее добавленных сообщений будет меняться?
Даже если и так, первоначально этот самый вес спокойно можно инициализировать датой-временем.
Ну или unix_timestamp'ом.

  Ответить  
 
 автор: Trianon   (17.07.2009 в 17:43)   письмо автору
 
   для: durable   (17.07.2009 в 17:24)
 

А что это за первый параметр ' ' такой странный?

  Ответить  
 
 автор: psychomc   (17.07.2009 в 17:52)   письмо автору
 
   для: durable   (17.07.2009 в 17:24)
 

если каждое новое имеет самый большой вес, то зачем доп поле тогда?
сделали всю сортировку по первичному auto increment и всё

  Ответить  
 
 автор: Trianon   (17.07.2009 в 17:54)   письмо автору
 
   для: psychomc   (17.07.2009 в 17:52)
 

на момент добавления имеет.
Если вес менять можно, то первичный ключ - нельзя.

  Ответить  
 
 автор: ride   (17.07.2009 в 18:02)   письмо автору
 
   для: durable   (17.07.2009 в 17:24)
 

может так
INSERT INTO `advert` SELECT 0, MAX(adv_weight)+1,  'Заголовок', 'Текст', NOW() FROM `advert`;

  Ответить  
 
 автор: Trianon   (17.07.2009 в 18:05)   письмо автору
 
   для: ride   (17.07.2009 в 18:02)
 

вообще говоря неправильно дергать на чтение таблицу, в которую пишешь.

  Ответить  
 
 автор: ride   (17.07.2009 в 18:35)   письмо автору
 
   для: Trianon   (17.07.2009 в 18:05)
 

буду знать...
тогда встречный вопрос: а если надо будет выбрать более одной записи?

  Ответить  
 
 автор: durable   (18.07.2009 в 11:57)   письмо автору
 
   для: ride   (17.07.2009 в 18:35)
 

Вес у ранее добавленных объявлений в последствии может меняться.

Первый парметр ' ' это поле auto_increment.

А Unix Timestamp будет уникальным в любом случее?
А рационально его использовать под вес?

  Ответить  
 
 автор: Trianon   (18.07.2009 в 12:37)   письмо автору
 
   для: durable   (18.07.2009 в 11:57)
 

>А Unix Timestamp будет уникальным в любом случее?
нет, конечно. А для Вас так критична уникальность веса?

  Ответить  
 
 автор: durable   (18.07.2009 в 13:11)   письмо автору
 
   для: Trianon   (18.07.2009 в 12:37)
 

В принципе если задуматься уникальность веса не критична =)

  Ответить  
 
 автор: Trianon   (18.07.2009 в 12:37)   письмо автору
 
   для: ride   (17.07.2009 в 18:35)
 

из той же таблицы?
делается сложным SELECT запросом.

  Ответить  
 
 автор: ride   (18.07.2009 в 13:15)   письмо автору
 
   для: Trianon   (18.07.2009 в 12:37)
 

да, из той же таблицы.
не совсем понял: в этом случае лучше сделать одним запросом:
insert into `table` select ... from `table`

?
или разбить на 2: сначала select, а потом insert?

  Ответить  
 
 автор: Trianon   (18.07.2009 в 13:21)   письмо автору
 
   для: ride   (18.07.2009 в 13:15)
 

>да, из той же таблицы.

Зачем такое может понадобиться?

insert into `table` select ... from ( select .. From `table`) as t

  Ответить  
 
 автор: ride   (18.07.2009 в 16:14)   письмо автору
 
   для: Trianon   (18.07.2009 в 13:21)
 

хм..а я думал, что такое решение необходимо только для update или delete...

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования