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

Форум MySQL

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

 

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

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

тема: обновление прайса при помощи данных из другой таблицы
 
 автор: alex000   (23.08.2005 в 17:54)   письмо автору
 
 

Есть две таблицы: abratt и abra. В abratt находится каталог товаров с ценами. В abra находяться новые цены.
Задача - надо обновить цены в abratt, взятые из abra. При этом обновление должно происходит так:
- в табл.abratt проапдейтить цены, взятые из табл.abra (но только там, где kod соответствуют друг другу).
- в табл.abra есть kod, которых нет в табл.abratt, то надо вставить соответствующие записи в табл.abratt из табл.abra.
- в табл.abratt есть kod, которых нет в табл.abra, то надо проапдейтить соответствующие цены в табл.abratt на значение ноль.


abratt - таблица, в которую записываются данные
структура abratt:
opis text NOT NULL, // описание товара
kod int(5) NOT NULL default '0', //код товара
price double(6,3) NOT NULL default '0.000', //цена товара
PRIMARY KEY (kod)

abra - таблица, из которой берутся данные
структура abra:
kod1 int(5) NOT NULL default '0', //код товара (из нового прайса)
price1 double(6,3) NOT NULL default '0.000', //новая цена товара
PRIMARY KEY (kod1)


Код:
$result=mysql_query("UPDATE abratt SET price=0",$db); //обнуляет старые цены
$result1=mysql_query("REPLACE INTO abratt (kod, price) SELECT abra.kod1, abra.price1 FROM abra",$db); //вставляет новые цены там, где код из таблицы abratt соответствует коду из таблицы abra

В результате его исполнения происходит обнуление столбца price в таблице abratt, затем обновление цен там, где соответствуют коды, добавились новые записи, но произошло удаление информации из столбца opis (удалилось описание товара).
Как сделать так, чтобы цены обновлялись, а инфа в других столбцах не изменялась

   
 
 автор: cheops   (24.08.2005 в 00:14)   письмо автору
 
   для: alex000   (23.08.2005 в 17:54)
 

Лучше REPLACE не использовать в данном случае больше подойдёт UPDATE. Т.е. вместо запроса
<?php
$result1
=mysql_query("REPLACE INTO abratt (kod, price) SELECT abra.kod1, abra.price1 FROM abra",$db); //вставляет новые цены там, где код из таблицы abratt соответствует коду из таблицы abra
?>

использовать многотабличный запрос UPDATE
UPDATE abratt, abra SET abratt.price = abra.price1 WHERE abratt.kod = abra.kod1

PS Вопросы, посвящённые MySQL лучше сразу помещать в соответствующем разделе http://www.softtime.ru/forum/index.php?id_forum=3

   
 
 автор: alex000   (24.08.2005 в 11:37)   письмо автору
 
   для: cheops   (24.08.2005 в 00:14)
 

Код:
$result1=mysql_query("UPDATE abratt,abra SET price=price1 WHERE kod=kod1",$db);
echo mysql_error();

Появляется ошибка:
You have an error in your SQL syntax near 'abra SET price=price1 WHERE kod=kod1' at line 1

   
 
 автор: cheops   (24.08.2005 в 12:52)   письмо автору
 
   для: alex000   (24.08.2005 в 11:37)
 

Хм... а у вас какая версия MySQL?

   
Rambler's Top100
вверх

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