Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
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


11-1264530745
andreil
2010-01-26 21:32
2017.09.17
TChart в KOLе?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский