SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 24.02.2009 22:48:56

kotofeich
Участник
Зарегистрирован: 08.08.2008
Сообщений: 10

Трудности при вставке и замене данных

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

Неактивен

 

#2 24.02.2009 23:11:59

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5831

Re: Трудности при вставке и замене данных

http://dev.mysql.com/doc/refman/5.1/en/ … icate.html

create table table_name(
date_up date,
id_project int,
count_sales int,
unique index(date_up,id_project));

insert into table_name (date_up,id_project,count_sales) values('date_up', 'id_project', 'count_sales') on duplicate key update count_sales=count_sales+1;

Неактивен

 

#3 24.02.2009 23:16:47

kotofeich
Участник
Зарегистрирован: 08.08.2008
Сообщений: 10

Re: Трудности при вставке и замене данных

vasya написал:

http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html

create table table_name(
date_up date,
id_project int,
count_sales int,
unique index(date_up,id_project));

insert into table_name (date_up,id_project,count_sales) values('date_up', 'id_project', 'count_sales') on duplicate key update count_sales=count_sales+1;

Спасибо большое. Исчерпывающий ответ. Прямо сижу и восхищаюсь красотой запросаsmile

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson