|
как посчитать сумму заказа?
|
|||
---|---|---|---|
#18+
У меня есть 4 таблицы: заказ(id_заказа, id_сборки, id_доставки, id_товара), товар(id_товара, название, цена), доставка(id_доставки, город, цена), сборка(id_сборки, вид, цена). Как сделать что бы при заполнении полей таблицы заказ, поле сумма рассчитывалось как цена товара+цена доставки+цена сборки ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2015, 18:27 |
|
как посчитать сумму заказа?
|
|||
---|---|---|---|
#18+
Hello, Mandarina! You wrote on 2 июня 2015 г. 18:31:44: Mandarina> Как сделать что бы при заполнении полей таблицы заказ, поле сумма > рассчитывалось как цена товара+цена доставки+цена сборки так и делай. либо в триггере, либо в вычисляемом поле. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2015, 18:31 |
|
как посчитать сумму заказа?
|
|||
---|---|---|---|
#18+
Мимопроходящий, а вы не подскажите как это сделать в вычисляемом поле? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2015, 18:35 |
|
как посчитать сумму заказа?
|
|||
---|---|---|---|
#18+
> Как сделать что бы при заполнении полей таблицы заказ, поле сумма А где там поле сумма? P.S. Вычисляемым полем не делай, делай триггером. А-то и ХП, если триггер сильно большой получится. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2015, 18:39 |
|
как посчитать сумму заказа?
|
|||
---|---|---|---|
#18+
там должно быть так: заказ(id_заказа, id_сборки, id_доставки, id_товара, сумма) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2015, 18:42 |
|
как посчитать сумму заказа?
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, если хп, то у меня получается только так: create or alter procedure UP_SUMMA ( ID_ZAK smallint) as begin update zakaz set zakaz.summa=:tovar.cena+dostavka.cena.+sborka.cena where id_zakaza=:id_zak; end я не понимаю как сделать саму процедуру ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2015, 18:54 |
|
как посчитать сумму заказа?
|
|||
---|---|---|---|
#18+
mandarinaupdate zakaz set zakaz.summa=:tovar.cena +dostavka.cena.+sborka.cena where id_zakaza=:id_zak;Выделенные значения надо тоже передать в эту ХП в кач-ве входных аргументов. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2015, 18:57 |
|
как посчитать сумму заказа?
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3.
Что в триггере, что в ХП. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2015, 18:58 |
|
как посчитать сумму заказа?
|
|||
---|---|---|---|
#18+
Кстати, да, Таблоид прав, там же отдельные поля. Только передавать надо, конечно, не доп.параметры, а 1 параметр id_zakaza, а по нему вытаскивать остальные id_товара, id_доставки, id_сборки и по ним фильтровать. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2015, 19:00 |
|
как посчитать сумму заказа?
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамКстати, да, Таблоид прав, там же отдельные поля. Только передавать надо, конечно, не доп.параметры, а 1 параметр id_zakaza, а по нему вытаскивать остальные id_товара, id_доставки, id_сборки и по ним фильтровать.да, это правильнее. Но если в "вызывателе" уже есть id_доставки и id_сборки, то зачем дёргать таблицы лишний раз ? Лучше тогда вообще передавать эти параметры как необязательные и разрулить в ХП эту ситуацию через if-else. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2015, 19:04 |
|
как посчитать сумму заказа?
|
|||
---|---|---|---|
#18+
Таблоид> Но если в "вызывателе" уже есть id_доставки и id_сборки, Таблоид> то зачем дёргать таблицы лишний раз ? Потому что ХП ничего про вызыватель не знает и не должна. Если вызыватель (триггер в данном случае) умнее вызываемого - пусть сам суммирует. Таблоид> Лучше тогда вообще передавать эти параметры как Таблоид> необязательные и разрулить в ХП эту ситуацию через if-else. Это плохой дизайн. Но с т.з. произв-ти, да, лучше. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2015, 19:06 |
|
как посчитать сумму заказа?
|
|||
---|---|---|---|
#18+
mandarinaКак сделать что бы при заполнении полей таблицы заказ, поле сумма рассчитывалось как цена товара+цена доставки+цена сборки Запрос с union all + SUM() не предлагать?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2015, 19:11 |
|
как посчитать сумму заказа?
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустамплохой дизайн. Но с т.з. произв-ти, да, лучше.я знаю, что "чем умнее ХП, тем хуже для неё". Но после многочисленных замеров прошлого года, связанных с имитацией олтп-грузилова, убедился, что чем меньше лазишь на диск, тем крепче сон :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2015, 19:13 |
|
как посчитать сумму заказа?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov> Запрос с union all + SUM() не предлагать?.. Те же яйца, но в профиль. Только протухшие. Зачем такое советуешь? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2015, 19:17 |
|
как посчитать сумму заказа?
|
|||
---|---|---|---|
#18+
Таблоид> я знаю, что "чем умнее ХП, тем хуже для неё" Ничего подобного. Это правило для триггеров. > Но после Это называется доимитировался. А теперь покрути в голове эту ситуацию с т.з. триггера, ХП и кеша - в любом раскладе твой вариант худший из возможных. :) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2015, 19:18 |
|
как посчитать сумму заказа?
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамКстати, да, Таблоид прав, там же отдельные поля. Только передавать надо, конечно, не доп.параметры, а 1 параметр id_zakaza, а по нему вытаскивать остальные id_товара, id_доставки, id_сборки и по ним фильтровать. а как их вытащить? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2015, 19:23 |
|
как посчитать сумму заказа?
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамЗачем такое советуешь? В отличии от некоторых я не люблю раздавать гранаты в виде хранимых агрегатов. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2015, 19:26 |
|
как посчитать сумму заказа?
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамТаблоид> я знаю, что "чем умнее ХП, тем хуже для неё" Ничего подобного. Это правило для триггеров.Это универсальное правило: чем меньше модуль знает об окружающем мире, тем проще будет его код. И тем спокойнее будет жазнь аффтара этого кода. Гаджимурадов РустамА теперь покрути в голове эту ситуацию с т.з. триггера, ХП и кеша - в любом раскладе твой вариант худший из возможных. :)Не понял тут, поясни плз. Что значит "с т.з. триггера, ХП и кеша", особенно про кеш ? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2015, 19:26 |
|
как посчитать сумму заказа?
|
|||
---|---|---|---|
#18+
mandarina> а как их вытащить? Select <что_нужно_вытащить> from zakaz where id_zakaz = :id В принципе этот запрос можно сделать универсальным Select <что_нужно_вытащить> from <таблица> where <условие> Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2015, 19:30 |
|
как посчитать сумму заказа?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov> В отличии от некоторых я не люблю раздавать гранаты в виде хранимых агрегатов. Согласен, до них дорасти надо. Но сабж уже есть хранимый агрегат. Курсовая, наверное. Таблоид> Это универсальное правило: чем меньше модуль знает Таблоид> об окружающем мире, тем проще будет его код Во-первых, нет такого правила. Во всяком случае, как утверждение оно верно, но не как правило и не как руководство к написанию кода (и его простоте). > Не понял тут, поясни плз. Что значит "с т.з. триггера, ХП и кеша", особенно про кеш ? Ну кеш - это про твоё "диск". А "триггер vs ХП" - это второй вариант, без кеша. Третий - твой. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2015, 19:34 |
|
как посчитать сумму заказа?
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамНо сабж уже есть хранимый агрегат. Нет. Для тех, у кого телепатор не работает, поясняю: "поле сумма" оно не в таблице, оно на междумордии ползателя. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2015, 19:38 |
|
как посчитать сумму заказа?
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам> Не понял тут, поясни плз. Что значит "с т.з. триггера, ХП и кеша", особенно про кеш ? Ну кеш - это про твоё "диск". А "триггер vs ХП" - это второй вариант, без кеша. Третий - твой.Извиняй, но всё равно не понимать я что-то по русськи :-) Вот это вот:ГРв любом раскладе твой вариант худший из возможных- обоснуй детально, плз. Чем вот такое вот: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2015, 19:45 |
|
как посчитать сумму заказа?
|
|||
---|---|---|---|
#18+
... пардон, коммит был раньше положенного... ну так вот: чем этот вариант "худший из возможных" ? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2015, 19:46 |
|
как посчитать сумму заказа?
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, так? create or alter procedure UP_SUMMA ( ID_ZAK smallint) as begin update zakaz set zakaz.summa = (select cena from tovar where id_tovara = (select id_tovara from zakaz where id_zakaza = :id_zak )) + (select price from dostavka where id_dostavki = (select id_dostavki from zakaz where id_zakaza = :id_zak )) + (select cena from sborka where id_sborki = (select id_sborki from zakaz where id_zakaza = :id_zak )) where id_zakaza=:id_zak; end ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2015, 19:50 |
|
как посчитать сумму заказа?
|
|||
---|---|---|---|
#18+
DS> Нет. Для тех, у кого телепатор не работает, поясняю: DS> "поле сумма" оно не в таблице, оно на междумордии ползателя. Мой сегодня на полке, поэтому я этот момент уточнил. :) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2015, 19:52 |
|
|
start [/forum/topic.php?fid=40&fpage=76&tid=1562803]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
128ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
103ms |
get tp. blocked users: |
1ms |
others: | 17ms |
total: | 299ms |
0 / 0 |