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

Форум MySQL

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

 

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

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

тема: Многотабличное обновление
 
 автор: TAURUS1982   (26.09.2007 в 18:30)   письмо автору
 
 

Пожалуйста помогите составить запрос
есть две таблицы vtiger_crmentity и vtiger_accountshipads.

Структура vtiger_crmentity :

crmid` int(19) NOT NULL default '0',
`smcreatorid ` int(19) NOT NULL default '0',
`smownerid` int(19) NOT NULL default '0',

структура vtiger_accountshipads:

`accountaddressid` int(19) NOT NULL default '0',
`ship_state` varchar(30) default NULL,

Необходимо присвоить всем значением поля smownerid значение 1122 , где ship_state таблицы vtiger_accountshipads например Киевская область.

во второй хранится информация id ship_state

Mysql знаю мало ((, вот мои потуги :
select * from vtiger_crmentity join vtiger_accountshipads on vtiger_crmentity.crmid=vtiger_accountshipads.accountaddressid where vtiger_accountshipads.ship_state LIKE '%Киевская%';)
UPDATE vtiger_crmentity SET vtiger_crmentity.smcreatorid = 1122 а что дальше?

   
 
 автор: Trianon   (26.09.2007 в 20:47)   письмо автору
 
   для: TAURUS1982   (26.09.2007 в 18:30)
 

Что-то Вы перемудрили.


UPDATE vtiger_crmentity AS с JOIN vtiger_accountshipads AS a 
   ON c.crmid = a.accountaddressid
  WHERE 
    a.ship_state LIKE '%Киевская%'
SET     c.smcreatorid = 1122

   
 
 автор: TAURUS1982   (27.09.2007 в 12:23)   письмо автору
 
   для: Trianon   (26.09.2007 в 20:47)
 

Спасибо за участие :)
после выполнения запроса получил ошибку

Возможно у Вас ошибка в SQL-парсере. Пожалуйста, проверьте внимательно Ваш запрос и соответствие кавычек. Возможно также, что Вы пытаетесь закачать бинарный файл вне поля quoted text area. Вы можете попробовать выполнить свой запрос через интерфейс командной строки MySQL. Описание ошибки MySQL сервера дано ниже, возможно оно поможет понять, что же произошло. Если у Вас все равно возникают проблемы или если парсер выдает ошибки там, где интерфейс командной строки работает успешно, попробуйте изменить свой SQL запрос до простых запросов и определить, какой именно вызывает проблемы. Вы можете также прислать отчет об ошибке вместе с блоком данных (секция CUT):
----BEGIN CUT----
eNo1zkFugkAUBuD9nOJfaNzoyEy0FZIuiJ0 orQIF1KWhQJVEkTKjqUtP0H1P0TRp0vQUeK OCbbfv
fe//n/A8xzMwZBhyTIRtgA/AdbABJ35QbU6EDOe+gYYVG5DPmzwsZFLQTfpI83XePoBTfg2uab0 u
Y12tD00zeszo97FJtjrES44GmR79h4mBPtU o0zuZ6mx2KzLzPTh+G+ZI2EEbc1G1LdIMjis8Ezrl
GnGnZvUQvaKMuGO3Jm3Hr3MY5VhYth2QiWm PDBT7zl49dQbk0jNzb81A4KDSVVIso2KbZC pVR5g+
zifcOZb9vwujaLfPlFyneRjLGoQAAeDYiGh 1mca4QUj/XBjHRSJlNazMYiw88asrUUcspQpVgol1
L9Bqlm/lV/lZfpxP5Xf5fn5ttkB8EdS8ypbbqEhCtSsuD Yxx/gMkknUA
----END CUT----
----BEGIN RAW----
ERROR: C1 C2 LEN: 28 29 182
STR: �

CVS: $Id: sqlparser.lib.php,v 2.27 2004/11/05 00:41:55 lem9 Exp $
MySQL: 5.0.19-nt-log
USR OS, AGENT, VER: Win OPERA 9.20
PMA: 2.6.1
PHP VER,OS: 5.1.2 WINNT
LANG: ru-utf-8
SQL: UPDATE vtiger_crmentity AS с JOIN vtiger_accountshipads AS a
ON c.crmid = a.accountaddressid
WHERE
a.ship_state LIKE '%Киевская%'
SET c.smcreatorid = 1122
----END RAW----

SQL-запрос:

UPDATE vtiger_crmentity AS с JOIN vtiger_accountshipads AS a ON c.crmid = a.accountaddressid WHERE a.ship_state LIKE '%Киевская%' SET c.smcreatorid = 1122

Ответ MySQL:
#1064 - 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 'WHERE
a.ship_state LIKE '%Киевская%'
SET c.smcreatorid = 11' at line 3

   
 
 автор: oradev   (27.09.2007 в 13:33)   письмо автору
 
   для: TAURUS1982   (27.09.2007 в 12:23)
 

Сделаете так :

UPDATE (SELECT *
          FROM vtiger_crmentity c JOIN vtiger_accountshipads a
               ON c.crmid = a.accountaddressid
         WHERE a.ship_state LIKE '%Киевская%') t
   SET t.smcreatorid = 1122;

   
 
 автор: TAURUS1982   (27.09.2007 в 14:02)   письмо автору
 
   для: oradev   (27.09.2007 в 13:33)
 

Попробовал. выдает ошибку :(
#1288 - The target table t of the UPDATE is not updatable

вот полная структура этих таблиц, может она внесет ясности



CREATE TABLE `vtiger_accountshipads` (
  `accountaddressid` int(19) NOT NULL default '0',
  `ship_city` varchar(30) default NULL,
  `ship_code` varchar(30) default NULL,
  `ship_country` varchar(30) default NULL,
  `ship_state` varchar(30) default NULL,
  `ship_pobox` varchar(30) default NULL,
  `ship_street` varchar(250) default NULL,
  PRIMARY KEY  (`accountaddressid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `vtiger_accountshipads` VALUES (147, 'Киев', NULL, 'Украина', 'Киевская обл.', NULL, 'г.Киев, ул.Северная,36');
INSERT INTO `vtiger_accountshipads` VALUES (3, 'Николаев', NULL, 'Украина', 'Николаевская обл.', NULL, 'г. Николаев, ул. Олейника ');

CREATE TABLE `vtiger_crmentity` (
  `crmid` int(19) NOT NULL default '0',
  `smcreatorid` int(19) NOT NULL default '0',
  `smownerid` int(19) NOT NULL default '0',
  `modifiedby` int(19) NOT NULL default '0',
  `setype` varchar(30) NOT NULL default '',
  `description` text,
  `createdtime` datetime NOT NULL default '0000-00-00 00:00:00',
  `modifiedtime` datetime NOT NULL default '0000-00-00 00:00:00',
  `viewedtime` datetime default NULL,
  `status` varchar(50) default NULL,
  `version` int(19) NOT NULL default '0',
  `presence` int(1) default '1',
  `deleted` int(1) NOT NULL default '0',
  PRIMARY KEY  (`crmid`),
  KEY `crmentity_smcreatorid_idx` (`smcreatorid`),
  KEY `crmentity_smownerid_idx` (`smownerid`),
  KEY `crmentity_modifiedby_idx` (`modifiedby`),
  KEY `crmentity_deleted_smownerid_idx` (`deleted`,`smownerid`),
  KEY `crmentity_smownerid_deleted_idx` (`smownerid`,`deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `vtiger_crmentity` VALUES (2, 1, 1122, 1122, 'Accounts', '', '2007-08-01 10:29:32', '2007-08-22 17:31:14', NULL, NULL, 0, 1, 0);
INSERT INTO `vtiger_crmentity` VALUES (3, 1, 1, 0, 'Accounts', '', '2007-08-01 10:29:32', '2007-08-01 10:29:32', NULL, NULL, 0, 1, 0);

   
 
 автор: TAURUS1982   (28.09.2007 в 08:55)   письмо автору
 
   для: TAURUS1982   (27.09.2007 в 14:02)
 

Перепробовал различные варианты. ничего не получается :(

   
 
 автор: TAURUS1982   (28.09.2007 в 10:22)   письмо автору
 
   для: TAURUS1982   (27.09.2007 в 14:02)
 

Перепробовал различные варианты, не работает :(

   
 
 автор: sim5   (28.09.2007 в 12:19)   письмо автору
 
   для: TAURUS1982   (28.09.2007 в 10:22)
 

Запрос составленный Trianon'om, на созданных таблицах указанных вами, выполнился без всяких проблем.

   
Rambler's Top100
вверх

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