Помогите с MySQL запросом

JonNiBravo
На сайте с 21.05.2006
Offline
52
529

есть таблица в MySQL


CREATE TABLE `monthlylogger` (
`id` int(11) NOT NULL auto_increment,
`abonentID` int(11) NOT NULL default '0',
`date` date NOT NULL default '0000-00-00',
`E1E2` double NOT NULL default '0',
`Vol1` double NOT NULL default '0',
`Vol2` double NOT NULL default '0',
`InA` double NOT NULL default '0',
`InB` double NOT NULL default '0',
`info` int(11) NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `abonentID` (`abonentID`),
KEY `date` (`date`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251 AUTO_INCREMENT=65 ;

После опроса устройства в таблицу заносятся записи


INSERT INTO `Monthlylogger`(abonentID,date,E1E2,Vol1,Vol2,InA,InB,info) VALUES (1,'2007-10-31',00000.00,00000.01,00000.00,00000.00,00000.01,0000000);
INSERT INTO `Monthlylogger`(abonentID,date,E1E2,Vol1,Vol2,InA,InB,info) VALUES (1,'2007-09-30',00000.00,00000.01,00000.00,00000.00,00000.01,0000013);
INSERT INTO `Monthlylogger`(abonentID,date,E1E2,Vol1,Vol2,InA,InB,info) VALUES (1,'2007-08-31',00000.00,00000.01,00000.00,00000.00,00000.01,0000013);
... и так далее, всего 37 месяцев

Как сделать так, чтобы в таблицу вносились только те записи, где значения полей abonentID и date уникальны в связке. Например, если запись 30 сентября для абонента 23 уже была, то не вносить.

можно конечно сначала сделать SELECT для проверки, но подозреваю что проблему можно решить более простым и красивым способом

Shtogrin
На сайте с 02.11.2006
Offline
95
#1

Создать уникальный ключ abonentID + date. Вставлять INSERT IGNORE ...

www.shtogrin.com (http://www.shtogrin.com/). Канцтовары (http://www.invit.com.ua/). 1С Бухгалтерия (http://account.kiev.ua/).
JonNiBravo
На сайте с 21.05.2006
Offline
52
#2
Shtogrin:
Создать уникальный ключ abonentID + date. Вставлять INSERT IGNORE ...

Все плучилось, спасибо. :)


CREATE TABLE `monthlylogger` (
`id` int(11) NOT NULL auto_increment,
`abonentID` int(11) NOT NULL default '0',
`date` date NOT NULL default '0000-00-00',
`E1E2` double NOT NULL default '0',
`Vol1` double NOT NULL default '0',
`Vol2` double NOT NULL default '0',
`InA` double NOT NULL default '0',
`InB` double NOT NULL default '0',
`info` int(11) NOT NULL default '0',
PRIMARY KEY (`id`),
UNIQUE KEY `date` (`date`,`abonentID`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251 AUTO_INCREMENT=69 ;
santa_claus_rpm
На сайте с 27.10.2007
Offline
9
#3

CREATE [UNIQUE|FULLTEXT] INDEX index_name

ON tbl_name (col_name[(length)],... )
SysAdmin Online - помощь в настройке Linux серверов (http://sysadminonline.ru)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий