Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2017.09.17;
Скачать: CL | DM;

Вниз

работоспособность составного запроса, 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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.005 c
11-1264530745
andreil
2010-01-26 21:32
2017.09.17
TChart в KOLе?


2-1423464515
Петров В.
2015-02-09 09:48
2017.09.17
Проверка даты


15-1465425551
dmk
2016-06-09 01:39
2017.09.17
Странное поведение отладчика


2-1445275556
Дмитрий
2015-10-19 20:25
2017.09.17
работоспособность составного запроса, mySQL