|
MySQL.RU - Webboard
Вернуться
INSERT ... SELECT (braboar) 14/06/2012 - 15:23:30
Re: INSERT ... SELECT (Akina) 14/06/2012 - 17:29:07
Re: INSERT ... SELECT (braboar) 14/06/2012 - 17:38:01
Re: INSERT ... SELECT (Akina) 14/06/2012 - 20:38:30
Re: INSERT ... SELECT (braboar) 15/06/2012 - 14:56:40
Re: INSERT ... SELECT (Akina) 17/06/2012 - 00:18:07
> Original message text:
> From: braboar - 14/06/2012 - 15:23:30
> Subject:INSERT ... SELECT
> -----------------
> Доброго дня всем!
> Есть таблицы:
> CREATE TABLE bibles.books(
> bookID INT(11) NOT NULL AUTO_INCREMENT,
> author INT(11) DEFAULT NULL,
> title VARCHAR(255) DEFAULT NULL,
> amount INT(11) NOT NULL DEFAULT 0,
> deliveries INT(11) NOT NULL DEFAULT 0,
> PRIMARY KEY (bookID)
> )
> ENGINE = MYISAM
> и
> CREATE TABLE bibles.authors(
> authID INT(11) NOT NULL AUTO_INCREMENT,
> fName VARCHAR(32) DEFAULT NULL,
> lName VARCHAR(32) DEFAULT NULL,
> PRIMARY KEY (authID)
> )
> ENGINE = MYISAM
> AUTO_INCREMENT = 1
>
> AUTO_INCREMENT = 1
> CHARACTER SET cp1251
> COLLATE cp1251_general_ci;
> Пытаюсь добавить в books новую запись с одновременной вставкой в authors, если такого автора не существовало:
> SET @title = 'Geometry Basics';
> SET @amount = 5;
>
> USE bibles;
>
> SET @fName = 'Sigismund';
> SET @sName = 'Freud';
>
> INSERT INTO books (author, title)
> VALUES (
> (INSERT INTO authors (fName, lName)
> SELECT @fName, @sName FROM DUAL
> WHERE NOT EXISTS(
> SELECT authors.fName, authors.lName FROM authors
> WHERE authors.fName = @fName AND authors.lName = @sName LIMIT 1)),
> @title
> );
> Получаю:
> 1 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INTO authors (fName, lName)
> SELECT @fName, @sName FROM DUAL
> WHERE ' at line 11
> Пожалуйста, помогите разобраться, где ошибка!
>
From: Akina - 14/06/2012 - 17:29:07
Subject:INSERT ... SELECT
-----------------
Если внутренний подзапрос - честный INSERT ... SELECT, то внешний - это INSERT ... INSERT. Понятно, что сервер такого не переварит.
Вставку в две таблицы выполняют либо через обновляемое представление - но оно тебе тут не светит,- либо двумя запросами, например в рамках хранимой процедуры.
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
41405
|
|