Форум: "Начинающим";
Текущий архив: 2017.09.17;
Скачать: [xml.tar.bz2];
Внизработоспособность составного запроса, mySQL Найти похожие ветки
← →
Дмитрий (2015-10-19 20:25) [0]Таблица изделий, таблица типоразмеров с количеством
Изделия обрабатываются списком
Подсчитать общее количество
Update Items
Set Items.Num = (select Sum(sizes.Num) from sizes where sizes.ItemID = Items.ItemID)
Where (ItemID in (65091,58401,65092));
Нарисовал тупо в лоб
Не могу понять как передатся параметр, должно ли быть видно внутри вложенного подзапроса параметры надзапроса?
← →
sniknik © (2015-10-19 22:22) [1]это не под/над, а вложенный запрос (запрос в запросе), будет вызван на каждую операцию апдейта (тут 3 раза), и соответственно каждое условие выбора (не параметр, параметр несколько иное) будет меняться.
убрать лишнее (оставить только "связывающий" алиас где неоднозначность) получится -
Update Items
Set Num = (Select Sum(Num) from sizes Where ItemID=Items.ItemID)
Where ItemID in (65091,58401,65092)
так, ИМХО, понятнее.
что равнозначно 3м командам (еще понятнее, но так не пишут...) -
Update Items
Set Num = (Select Sum(Num) from sizes Where ItemID=65091)
Where ItemID=65091
Update Items
Set Num = (Select Sum(Num) from sizes Where ItemID=58401)
Where ItemID=58401
Update Items
Set Num = (Select Sum(Num) from sizes Where ItemID=65092)
Where ItemID=65092
← →
sniknik © (2015-10-19 22:33) [2]кстати в mySQL может пройти и вот такой синтаксис -
Update Items,sizes
Set Items.Num=Items.Num + sizes.Num
Where Items.ItemID=sizes.ItemID AND Items.ItemID IN (65091,58401,65092)
← →
Дмитрий (2015-10-20 15:39) [3]спасибо,
т.е. поля обновляемой таблицы видны во вложенном запросе
конструкция
Set Num = (Select Sum(Num) from sizes Where ItemID=Items.ItemID)
правильная и надежная, и ее можно использовать спокойно?
как сработает конструкция
Set Items.Num=Items.Num + sizes.Num
когда на каждый Items существует много связанных sizes ?
← →
sniknik © (2015-10-21 00:34) [4]> как сработает конструкция
по логике правильно, засуммирует... и даже быстрее чем с подзапросами должно т.к. суть однопроходная, а не много-по количеству значений/подзапросов.
но я вообще на mySQL в последнее время не пишу, проверять надо (и чтоб было виднее на большом количестве значений в условии).
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2017.09.17;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.001 c