Мне нужно обновить две таблицы в одном запросе SQL - PullRequest
0 голосов
/ 07 января 2019

В Python у меня есть следующий код:

cursor.execute("""
UPDATE customerDetails
SET customerDetails.cust_owed =
(customerDetails.cust_owed -orders.order_price),                                     
customerDetails.cust_paid = orders.order_price
WHERE orders.orderID = ?
AND orders.customerID = customerDetails.customerID""", (orderID,))

Однако это не работает, любая помощь будет принята с благодарностью!

Ответы [ 2 ]

0 голосов
/ 10 января 2019

Вам нужно сделать два отдельных подвыбора, чтобы сделать эту работу.

Кроме того, вам необходимо удалить имя таблицы из имен столбцов, которые вы обновляете.

UPDATE customerDetails
SET    cust_owed = (cust_owed - (SELECT order_price FROM orders WHERE orders.orderID = ?)),
       cust_paid = (SELECT order_price FROM orders WHERE orders.orderID = ?)
WHERE customerID = (
    SELECT customerID FROM orders WHERE orderID = ? )


cursor.execute("""
  UPDATE customerDetails
  SET    cust_owed = (cust_owed - (SELECT order_price FROM orders WHERE orders.orderID = ?)),
         cust_paid = (SELECT order_price FROM orders WHERE orders.orderID = ?)
  WHERE customerID = (
      SELECT customerID FROM orders WHERE orderID = ? )""", (orderID,orderID,orderID))
0 голосов
/ 07 января 2019

Как я знаю, вы можете разделять каждый SQL-запрос точкой с запятой (;). Например:

Cursor.execute("""Update table 
(id,name) values ('1','test') where 
id=1;Update table (id,name) values 
('2','test2') where id=2;""")

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...