Моя хранимая процедура SQL с обновлением

У меня есть хранимая процедура, которая используется при вставке новой транзакции. Эта процедура правильно вставляется в таблицу транзакций, но мне также нужно обновить другую связанную таблицу на основе вставленных значений.

На основе Product_ID мне нужно обновить PT_Pct_to_Salon в таблице «Салон» со значением из таблицы «Zen_Products_Description». Соответствующий салон можно найти с помощью вставки «Salon_ID», которая эквивалентна PK ID таблицы «Salon».

Значение, которое мне нужно вставить, находится в поле web_share таблицы Zen_Products_Description. Соответствующая строка в «Zen_Products_Description» может быть сопоставлена ​​путем сопоставления вставленного значения «Product_ID» с PK «Zen_Products_Description», который называется «products_id».

Я использую MySQL 5.


BEGIN
INSERT INTO Transactions
(Cart_Trans_ID, Customer_ID, Pass_Through_Amt, Product_ID, Product_Name, Product_Qty, Salon_ID,  Stylist_ID, Trans_Type, customerAddress, customerCity, customerEmail, customerFirstName, customerLastName, customerPhone, customerPostal, customerState) 
VALUES (Cart_Trans_ID, Customer_ID, Pass_Through_Amt, Product_ID, Product_Name, Product_Qty, Salon_ID, Stylist_ID, Trans_Type, customerAddress, customerCity, customerEmail, customerFirstName, customerLastName, customerPhone, customerPostal, customerState);
Insert Into Zen_Products_Description
(products_id, products_name) 
Values (Product_ID, Product_Name) ON DUPLICATE KEY UPDATE
products_name = Product_Name;

//this is where I try unsuccessfully to update
update Salon
set PT_Pct_to_Salon = Zen_Products_Description.web_share
join Salon
on Salon.Salon_ID = Transactions.Salon_ID
join Zen_Products_Description
on Zen_Products_Description.products_id = Transactions.Product_ID;

END

Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
0
165
1

Ответы 1

лол - ты забыл задать вопрос ... будь кратким и я тебе помогу

BEGIN 
  INSERT INTO Transactions 
    (Cart_Trans_ID, Customer_ID, 
     Pass_Through_Amt, Product_ID, Product_Name, 
     Product_Qty, Salon_ID, Stylist_ID, 
     Trans_Type, customerAddress, customerCity, 
     customerEmail, customerFirstName, customerLastName, 
     customerPhone, customerPostal, customerState) 
  VALUES 
    (Cart_Trans_ID, Customer_ID, 
     Pass_Through_Amt, Product_ID, Product_Name, 
     Product_Qty, Salon_ID, Stylist_ID, 
     Trans_Type, customerAddress, customerCity, 
     customerEmail, customerFirstName, customerLastName, 
     customerPhone, customerPostal, customerState); 


Insert Into Zen_Products_Description 
  (products_id, products_name) 
Values 
  (Product_ID, Product_Name) 

ON DUPLICATE KEY 

UPDATE products_name = Product_Name
########## everything above here is immaterial
update Salon 
  set PT_Pct_to_Salon = Zen_Products_Description.web_share 
join Salon on Salon.Salon_ID = Transactions.Salon_ID 
join Zen_Products_Description 
  on Zen_Products_Description.products_id = Transactions.Product_ID;

############### here is update

UPDATE salon A 
INNER JOIN Transactions B ON A.salon_ID = B.salon_ID
INNER JOIN Zen_Products_Description C on C.Products_id = B.product_id
SET A.PT_Pct_to_Salon = C.web_share
## , a.x = b.x etc... ## and by the way - learn how to format your code so people can read it...
END 

Это действительно должен быть комментарий к вопросу.

BobbyShaftoe 09.01.2009 04:37

Другие вопросы по теме