Этот синтаксис оператора Update действителен или нет - PullRequest
0 голосов
/ 13 октября 2019

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

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

c.execute("""UPDATE Pdct_tbl SET Store_Code = (SELECT Store_Code FROM StoringTF WHERE Product_Code = ?), Store = (SELECT Store FROM StoringTF WHERE Product_Code = ?),
        Product_Date = (SELECT Product_Date FROM StoringTF WHERE Product_Code = ?),
        Permission = (SELECT Permission FROM StoringTF WHERE Product_Code = ?),
        Product_Code = (SELECT Product_Code FROM StoringTF WHERE Product_Code = ?),
        Product_Name = (SELECT Product_Name FROM StoringTF WHERE Product_Code = ?),
        Incoming = (SELECT Incoming FROM StoringTF WHERE Product_Code = ?),
        Unit_Buying_Price = (SELECT Unit_Buying_Price FROM StoringTF WHERE Product_Code = ?),
        Total_Buying_Price = (SELECT Total_Buying_Price FROM StoringTF WHERE Product_Code = ?),
        Outgoing = (SELECT Outgoing FROM StoringTF WHERE Product_Code = ?),
        Unit_Sell_Price = (SELECT Unit_Sell_Price FROM StoringTF WHERE Product_Code = ?),
        Total_Sell_Price = (SELECT Total_Sell_Price FROM StoringTF WHERE Product_Code = ?),
        Description = (SELECT Description FROM StoringTF WHERE Product_Code = ?),
        Quantity_In_Seberbay = (SELECT SUM(StoringTF.Incoming) - SUM(StoringTF.Outgoing) FROM StoringTF WHERE StoringTF.Store_Code = 2 AND StoringTF.Product_Code = ?),
        Value_In_Seberbay = (SELECT SUM(StoringTF.Total_Buying_Price) - SUM(StoringTF.Total_Sell_Price) FROM StoringTF WHERE StoringTF.Store_Code = 2 AND StoringTF.Product_Code = ?),
        Quantity_In_Morashaha = (SELECT SUM(StoringTF.Incoming) - SUM(StoringTF.Outgoing) FROM StoringTF WHERE StoringTF.Store_Code = 1 AND StoringTF.Product_Code = ?),
        Value_In_Morashaha = (SELECT SUM(StoringTF.Total_Buying_Price) - SUM(StoringTF.Total_Sell_Price) FROM StoringTF WHERE StoringTF.Store_Code = 1 AND StoringTF.Product_Code = ?),
        Quantity_In_Nouran_Store = (SELECT SUM(StoringTF.Incoming) - SUM(StoringTF.Outgoing) FROM StoringTF WHERE Store_Code = 3 AND StoringTF.Product_Code = ?),
        Value_In_Nouran_Store = (SELECT SUM(StoringTF.Total_Buying_Price) - SUM(StoringTF.Total_Sell_Price) FROM StoringTF WHERE StoringTF.Store_Code = 3 AND StoringTF.Product_Code = ?)
        """,(Val))

Я ожидаю, что вывод будет таблицей, но git bash просто застревает и ничего не показывает. Я уверен, что проблема в этом, потому что, когда я пробовал это с несколькими операторами обновления, это работало, но показывало только первую строку, как упомянуто выше. Можете ли вы помочь мне с этим, и мне очень жаль длину кода, но мне пришлось показать все это, потому что ошибка может быть где-то в этом утверждении или в целом утверждении в целом. Знак вопроса представляет пустой слот для переменной val в конце, который поступает от пользовательского ввода, и я уверен, что в этой части нет ничего плохого. Спасибо за ваше терпение и надеюсь, что вы можете помочь. Спасибо.

Ответы [ 2 ]

0 голосов
/ 14 октября 2019

Если val уже является одноэлементным кортежем, вы должны написать:

 val*19

Если val является значением, которое вы хотите использовать, вы можете написать:

(val,)*19

Что касается количества возвращенных строк, возможно, вы могли бы предоставить дополнительную информацию, например,

1) каково значение:

SELECT COUNT(*) FROM StoringTF;

2) как вы определяете, сколько предметовв наборе результатов?


ps. Это может быть полезно как для вас, так и для других, если вы можете воспроизвести проблему с очень маленькой таблицей и обновить вопрос, чтобы он больше соответствовалhttp://stackoverflow.com/help/mcve рекомендации.

0 голосов
/ 13 октября 2019

Последняя строка должна передавать параметр столько раз, сколько появляется заполнитель:

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