неравный брак (replace)

macros

Guest
неравный брак (replace)

Здравствуйте, друзья.
Что- то совсем зашился.
Есть две таблицы
первая
CREATE TABLE `books`.`example` (
`EAN` bigint( 13 ) unsigned NOT NULL default '0',
`TITLE` char( 150 ) NOT NULL default '',
`b1` tinyint( 3 ) NOT NULL default '0',
`b2` tinyint( 3 ) NOT NULL default '0',
`PRICE` char( 10 ) NOT NULL default '',
`CLASSIF` smallint( 4 ) unsigned NOT NULL default '0',
PRIMARY KEY ( `EAN` )
) TYPE = MyISAM ;
и вторая
CREATE TABLE `books`.`example1` (
`EAN` bigint( 13 ) unsigned NOT NULL default '0',
`TITLE` char( 150 ) NOT NULL default '',
`b1` tinyint( 3 ) NOT NULL default '0',
`PRICE` char( 10 ) NOT NULL default '',
`CLASSIF` smallint( 4 ) unsigned NOT NULL default '0',
PRIMARY KEY ( `EAN` )
) TYPE = MyISAM ;

когда не было лишнего поля все решалось
replace example select * from example1
а теперь нужно чтобы сработал replace не затрагивая поля 'b2'
его потом нужно будет менять через другой подобный replace.
Никак не получается слепить запрос.
Те нужен replace определенных полей не трогая лишние.

С уважением.
 

su1d

Старожил PHPClubа
а так не работает? (или что-то подобное):

REPLACE INTO example(EAN, title, b1, PRICE, CLASSIF) SELECT ENA, title, b1, PRICE, CLASSIF FROM example1
 

macros

Guest
Пробовал

Table 'books.example' doesn't exist

Вот и весь ответ. Там как-то надо указывать принадлежность полей таблице через точки. А как?
Метод научного тыка себя исчерпал. а примерчика толкового не нашел нигде
 

Barlone

Guest
В mysql 3.x - никак, в 4.х надо смотреть в сторону UPDATE:

Starting with MySQL Version 4.0.4, you can also perform UPDATE operations that cover multiple tables:
UPDATE items,month SET items.price=month.price
WHERE items.id=month.id;
 

macros

Guest
UPDATE не катит,
потому как в случае, если уникального ключа нет, в таблицу должна вставляться новая строка
 

macros

Guest
REPLACE INTO example(EAN, title, b1, PRICE, CLASSIF) SELECT EAN, title, b1, PRICE, CLASSIF FROM example1

Так работает но заодно изменяется поле b2, а этого делать никак нельзя.
 

si

Administrator
REPLACE - DELETE + INSERT так что наверно тебе это неподходит

REPLACE works exactly like INSERT, except that if an old record in the table has the same value as a new record on a unique index, the old record is deleted before the new record is inserted.
 

macros

Guest
И какой тогда выход?
И есть ли он?
Проверять и вставлять по одной строке ИМХО очень медленно, ведь таблицы могут быть большие.
 

macros

Guest
Спасибо, попробую.
Да и вот еще вопрос. Я тут подумал чуток, задачу можно (и наверное должно) сформулировать по другому. Не будет ли хамством поднять тему?
 
Сверху