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

Форум MySQL

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

 

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

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

тема: Трудности при вставке и замене данных
 
 автор: kotofeich   (24.02.2009 в 22:49)   письмо автору
 
 

Не могу сообразить как правильно организовать структуру таблицы.
Упрощенный пример:
В таблице нужно хранить дату date_up (type date), номер проекта id_project (type int 11) и колличество продаж count_sales (type int 11).
Приложение клиент-серверное и данные в этой таблице могут обновляться несколько раз за день.
У меня сейчас проблема в том, что делаю replace данных и появляется новая запись, все равно что я сделал бы insert.
Задача в том, что если дата и номер проекта совпадает, то нужно только обновить колличество продаж в записи.
У меня сейчас попросту не хватает знаний, как правильно должна выглядеть структура это таблицы, как раставить ключи и индексы (и нужны ли они тут).
Я могу добавить инкрементное поле id, находить этот id по дате и номеру проекта, и делать уже update, но думаю это далеко не самое лучшее решение.
Помогите, пожалуйста, кто разбирается.

  Ответить  
 
 автор: Trianon   (24.02.2009 в 23:08)   письмо автору
 
   для: kotofeich   (24.02.2009 в 22:49)
 

оба актуальных оператора (и REPLACE и INSERT INTO ... ON DUPLICATE KEY UPDATE ...) реагируют на наличие строки, в которой дает совпадение уникальный индекс (в частности первичный ключ)
уникальный индекс (или даже первичный ключ) Вам нужно сделать составным
, UNIQUE KEY `date_id_project` (`date_up`,`id_project`)

А какой оператор выбирать - зависит от того, что Вы хотите получить.
чтоб старая строка удалялась перед вставкой новой (DELETE-INSERT), или чтоб в ней изменялись поля (UPDATE)

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

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