Господа, помогите начинающему советом. Необходимо написать хранимую процедуру, которая решала бы следующую задачу. Допустим есть таблица с товарами (prouctid), у каждого товара есть стоимость, выраженная в иностранной валюте (pricecur), а в поле curid хранится идентификатор валюты : Код (PHP): CREATE TABLE product ( `prouctid` INT NULL, `prouctname` VARCHAR(255) NULL, `pricecur` float(8,2) NULL, `curid` INT NULL, `pricerub` float(8,2) NULL) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_unicode_ci; Пример записей таблицы: 1,'Телевизор', 156.00, 1343,NULL; 2,'Чайник', 116.00, 1343,NULL; 3,'Утюг', 176.00, 1343,NULL; 4,'Посудомойка', 126.00, 1343,NULL; 5,'Микроволновка', 256.00, 5343,NULL; 6,'Вентилятор', 16.00, 5343,NULL; 7,'Пылесос', 151.00, 5343,NULL; 8,'Бра', 16.00, 5343,NULL; 9,'Унитаз', 106.00, 5343,NULL; 10,'Раковина', 101.00, 5343,NULL; Кроме того, есть таблица-справочник валют: CREATE TABLE currency ( `curid` INT NULL, `cur` varchar(3) NULL) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_unicode_ci; Пример записей таблицы: 1343, 'EUR'; 5343, 'USD'; Кроме того, есть таблица с курсами валют: CREATE TABLE currate ( `cur` VARCHAR(3) NULL, `currate` float(8,4) NULL) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_unicode_ci; Пример записей таблицы: 'EUR',62.1234; 'USD',58.4567; ЗАДАЧА Необходимо написать хранимую процедуру, которая проапдейтит поле pricerub у всех записей product путем умножения значения из pricecur на соответствующий курс из таблицы currate. При этом следует иметь в виду, что количество записей в таблице product очень большое, поэтому, понятно дело, что выполнить связку product.curid -> currency.cur ->currate.currate необходимо сделать один раз в начале выполнения процедуры (а не выполнять на каждую запись в таблице product). Если писать на PHP, то можно было бы сначала сформировать массив валют и потом просто, для каждой валюты по-очереди проапдейтить записи, однако в написании процедур на mysql у меня опыта нет и вроде как с массивами в SQL проблема, поэтому у меня пока нет идей как решить эту задачу... помогите плиз советом, как нписать такой код. Спасибо. PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
Могу ошибаться, но кажется у тебя процедурный подход в программировании Тебе вроде надо запрос на изменение (один), а ты пишешь "дайте процедуру, вначале надо один раз сделать то-то". Зачем? SQL славен тем, что одним предложением описывается что надо сделать. А как сделать это уже его заморочки. Он знает что сделать вначале, а что потом. как-то так: Код (PHP): UPDATE product AS p JOIN currency AS c ON c.curid = p.curid JOIN currate AS r ON r.cur = c.cur SET p.pricerub = p.pricecur * r.currate sqlfiddle - бдыщь - в другой раз сам оформи такую заготовку, ок?! Добавлено спустя 15 минут 10 секунд: Re: Проапдей поле в таблице в зависимости от значения другого по p.s. может и лишнее, это всего-лишь пример, но я скажу: в currate для обозначения валюты напрашивается поле curid int. зачем там строковое название? запросы будут короче и эффективнее с целочисленным ключем. и вообще primary key здесь в явную нигде не обозначен, а он кагбе должен быть!!!
Re: Проапдей поле в таблице в зависимости от значения другог "Я же только учус!")) Преогромное спасибо!) Запрос выглядит рабочим Буду пробовать!