|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Есть Код: c# 1. 2. 3.
Хочу добавить еще SUM(sumTn) AS Expr3, SUM(sumTn) AS Expr4, но не пойму куда c Expr3 все легко, а куда надо подставить SUM(sumTn) AS Expr4 ? Чет совсем запутался.. Вроде бы напрашивается, Код: c# 1. 2. 3.
В выводе Expr4 нет. Неужели только отдельную строку добавлять? Код: c# 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2016, 09:30 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Если это вопрос чисто по SQL, его логично было задавать в подфоруме соответствующей СУБД. Тем более, что СУБД не указана, а синтаксис может отличаться. Для начала в самом первом запросе какая-то ерунда, поэтому непонятно вообще, что требуется получить. Зачем отбирается два раза SUM(summe) по одинаковым условиям? Подзапрос в качестве поля выборки - это вообще хрень какая-то. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2016, 09:48 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Shocker.ProПодзапрос в качестве поля выборки - это вообще хрень какая-то. нормально это ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2016, 18:57 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Хрень какая. Не пиши такую жесть даже если она срабатывает. Приведи тестовый набор данных и какой результат хочешь получить. PS По-хорошему надо спрашивать в форуме по СУБД, в которую запрос пошлешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2016, 19:17 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Извиняюсь, что вчера не ответил. Метель, обрыв ЛЭПа, А лкоголь и женщины. В общем сумма всех вышеуказанных факторов помешала вернуться к компу в теч. дня для решения вопроса по другому суммированию. Также извиняюсь, если не в тот форум спросил. Ежели чего, то прошу модераторов перенести в соответствующий. Раньше вроде похожие вопросы здесь задавал. Вроде даже отвечали.. База - SQL-Server Суть -есть таблица id - менеджер - Стоимость - Тонны - Вид работ ------ Дата - Заказчик1 ----- Петр ------- 200 -------- 20 -----погрузка --- 20/12/2015 - SOK2 ----- Сергей ---- 300 -------- 30 -----обработка ---20/12/2015 - SOK3 ----- Петр ------- 200 -------- 20 -----погрузка --- 20/12/2015 -- DTS4 ---- - Сергей --- 300 -------- 30 -----обработка --- 20/12/2015 - DTS5 ----- Петр ------- 200 -------- 20 -----погрузка ----20/12/2015 -- GVR6 ----- Сергей ---- 300 -------- 30 -----обработка ---20/12/2015 -- GVR .... нужна выборка сумм Стоимости и Тонн в течение месяца по разным заказчикам с разделением по видам работ. т.е с условием WHERE (MONTH(Дата) = '{0}') AND (YEAR(Дата) = '{1}') AND (вид работ= '{2}' AND (заказчик= '{3}') id - Expr1 - Expr2 - Expr3 - Expr41 --- 4000 - 800 ---- 7000 --- 500 //SOK где Expr1 = Сумма стоимостей вида работ "погрузка" в текущем месяце Expr2 = Сумма стоимостей вида работ "обработка" в текущем месяце Expr3 = Сумма тоннажа вида работ "погрузка" в текущем месяце Expr4 = Сумма тоннажа вида работ "обработка" в текущем месяце далее через цикл остальные заказчики 2 - 6000 - 400 - 3000 - 300 //DTS3 - 6000 - 400 - 3000 - 300 //GVR Виды работ фиксированные и не меняются. Кол-во заказчиков в разные месяца - разное Вывод таблицы с Expr1 и Expr2 вроде добился. А вот добавить в нее сумму тоннажей не получается. Может изначально запрос неправильно составил ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2016, 10:17 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2016, 10:48 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Сорри, группировка по Вид работ лишняя Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2016, 10:50 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Заменить Shocker.Pro Код: sql 1.
на Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2016, 10:58 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Алексей К, Да, верно, я еще не совсем проснулся ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2016, 11:01 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Shocker.ProАлексей К, Да, верно, я еще не совсем проснулся )))С Добрым утром! :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2016, 11:03 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Алексей КShocker.ProДа, верно, я еще не совсем проснулся )))С Добрым утром!Построитель SQL-запросов проснулся, а оптимизатор еще спит ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2016, 11:04 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Спасибо всем. Все работает. Синтаксис для меня странный. Надо будет разбираться еще что к чему. Остался один вопрос - где указать наименования столбцов? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2016, 13:12 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Код: sql 1.
но хорошим тоном все-таки считается давать вменяемые имена всему (переменным, формам, полям и т.п.). Потом сам запутаешься. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2016, 13:20 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
да я уж разобрался, чет тормознул сразу. А имена другие. Я тут так для простоты изложения написал, чтобы моск никому не выносить непонятными буквами ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2016, 13:25 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
mdm114Синтаксис для меня странный.Для меня меня странным оказался как раз синтаксис, изложенный в первом сообщении ) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2016, 13:40 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
нагуглил где-то.. Запустил в полную мощь - результат превзошел все мои ожидания. Еще раз респект. Остался вопрос зачем N в [Вид работ]=N'погрузка' ? Не смог найти ответ ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2016, 10:22 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Какого типа у вас поле "Вид работ"? ЗЫ: по хорошему-то оно должно быть вообще внешним ключом, впрочем как и Заказчик и Менеджер ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2016, 10:48 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
mdm114нагуглил где-то.. Запустил в полную мощь - результат превзошел все мои ожидания. Еще раз респект. Остался вопрос зачем N в [Вид работ]=N'погрузка' ? Не смог найти ответ Это значит строка в юникоде. https://msdn.microsoft.com/ru-ru/library/ms186939(v=sql.120).aspx Prefix Unicode character string constants with the letter N. Without the N prefix, the string is converted to the default code page of the database. This default code page may not recognize certain characters. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2016, 10:59 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Shocker.Pro, как раз сейчас задумался над тем, чтобы вынести в отдельную таблицу. Так - varchar Dima T, за ссыль спасибо. Ситуация потихонечку проясняется ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2016, 11:12 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
если varchar, то N можно убрать если бы было nvarchar - N помогло бы избежать излишнего неявного преобразования строки в юникод ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2016, 11:18 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
После Ваших советов пришлось переделывать много чего. Выкинул много кода. Еще раз благодарствую. Будете у нас в Нижнем -пиво с меня. В продолжение данной темы возник вопрос. Как по фенсую делается произведение двух колонок? В клиентском коде или это можно как то в запрос запихнуть? И стоит ли это того? У меня labels привязаны к табличке. Соответственно вслед за изменением позиции bindingsource меняются и значения. Сейчас у меня прицеплена функция к bindingsource.PositionChanged. Но гложет вопрос, может еще как то по другому можно сделать? Т.е отобразить сразу произведение в таблице и прицепить к этой колонке свой label минуя функцию? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 16:51 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
при наличии SQL-сервера я стараюсь делать подобные вещи на стороне сервера - уменьшается трафик, уменьшается нагрузка на клиента, а сервер - он и нужен для того, чтобы пахать ) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 17:06 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
ИМХУ то что можно делать на клиенте - лучше делать на клиенте, т.к. сервер один. Пока он молотит для одного клиента - возможно другой тупо ждет. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 17:11 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Dima TИМХУ то что можно делать на клиенте - лучше делать на клиенте, т.к. сервер один. Пока он молотит для одного клиента - возможно другой тупо ждет.Что проще, нарастить мощность одного сервера или нарастить мощность сотни клиентов? Dima TПока он молотит для одного клиента - возможно другой тупо ждет.Либо ты плохо организовал его работу, либо сервер слаб для своих задач. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 17:13 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Shocker.ProDima TИМХУ то что можно делать на клиенте - лучше делать на клиенте, т.к. сервер один. Пока он молотит для одного клиента - возможно другой тупо ждет.Что проще, нарастить мощность одного сервера или нарастить мощность сотни клиентов? А как вы построили клиентский мониторинг, ну и серверный, чтобы узнать, когда и где пора что-то наращивать? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 17:21 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Мощности серверу добавить сложнее. Ограничения сервера не столько в процессорном времени, сколько в блокировках. Если более сложный запрос дольше держит блокировку, то доп.ядра тут не помогут. А клиентам хз зачем наращивать, у них обычно проц простаивает. Насчет трафика непонятно. Например, если задача стоит возвращать количество и цену или количество, цену и сумму, то трафик больше при расчете на сервере. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 17:28 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Я понимаю твою иронию специалиста по крупным проектам )) Вступать в дискуссию - как правильно, как лучше и т.п. не хочу, это оффтопик здесь будет. Просто отвечу на твой вопрос. На сервере просто следил за загрузкой процессора и дисков. Когда год назад мне перестала нравиться дисковая загрузка, попросил ИТ-отдел удвоить память, результат был налицо. На клиенте просто по отзывчивости работы клиента, срокам отклика интерфейса, благо сам работал в том числе как пользователь в том, что разрабатывал; когда просто помогал пользователям что-то делать, ну и многие пользователи были приучены сообщать о замедлении работы в той или иной сфере. Ну еще мониторил иногда профайлером запросы с большим duration или cpu. Последнее время мощность офисных рабочих станций не имеет тенденции к постоянному увеличению, наблюдается застой и даже сокращение (за счет, например, массового перехода на нетбуки)... И да, речь, конечно, была о двухзвенке. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 17:31 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Dima TНасчет трафика непонятно. Например, если задача стоит возвращать количество и цену или количество, цену и сумму, то трафик больше при расчете на сервере.ну, грубо говоря, если стоит вариант передавать несколько аргументов функции, либо результат этой функции. Кроме того, всегда старался избежать лишнего запроса к серверу. То есть если есть вариант вернуть больше данных одним запросом, но сэкономить на лишнем запросе, выбирал больше данных. Повторюсь, речь о двухзвенке. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 17:34 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Shocker.Pro, а где ты увидел иронию? Мне просто интересно, кто чем пользуется и как. МСУ помнится смог себе SCOM позволить :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 17:37 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
skyANAShocker.Pro, а где ты увидел иронию?а, тады сорри ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 17:39 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Простите великодушно, что прерываю Вашу милую беседу своими расспросами.. Код: sql 1. 2. 3. 4. 5. 6. 7.
Что то мне подсказывает дополнительное дублирующее вычисление Sum(case when [Вид работ]=N'погрузка' then Тонны else 0 end) *стоимость часа AS Total излишне. Как то можно заменить на что то типа Expr1*стоимость часа AS Total? А то так то получается, что одно и тоже значение вычисляется дважды ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2016, 08:46 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
mdm114Простите великодушно, что прерываю Вашу милую беседу своими расспросами..На момент твоего поста, беседа закончилась 15 часов назад. mdm114 Код: sql 1. 2. 3. 4. 5. 6. 7.
Что то мне подсказывает дополнительное дублирующее вычисление Sum(case when [Вид работ]=N'погрузка' then Тонны else 0 end) *стоимость часа AS Total излишне. Как то можно заменить на что то типа Expr1*стоимость часа AS Total? А то так то получается, что одно и тоже значение вычисляется дваждыИ что? План выполнения от этого сильно хуже, скорость проседает? Ну используй эту часть: Код: sql 1. 2. 3. 4. 5. 6.
как подзапрос, или CTE, или представление, или данные для временной таблицы, или данные для денормализации... или вычисляй Total на клиенте ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2016, 11:21 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2016, 12:03 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2016, 13:03 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
По хорошему просто Код: sql 1. 2. 3. 4. 5.
Остальное допилить на клиенте по получению. Если на сервере допиливать, то через временную таблицу. Лучше сначала выбрать необходимое во временную таблицу, а потом выборка из нее. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Не стоит пытаться все утрамбовать в один запрос. MS SQL на сложных запросах иногда нездоровый план делает. Сталкивался со случаями когда запрос работающий 10-15 сек, после подобного разбиения выполнялся менее секунды. И блокировки не надо держать больше чем надо. Выбрал, GO, и допиливай никому не мешая. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2016, 14:49 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
mdm114 Код: sql 1.
Что то мне подсказывает дополнительное дублирующее вычисление Sum(case when [Вид работ]=N'погрузка' then Тонны else 0 end) *стоимость часа AS Total излишне. Как то можно заменить на что то типа Expr1*стоимость часа AS Total? А то так то получается, что одно и тоже значение вычисляется дважды Мне что-то подсказывает что ты не то считаешь. Такой результат ожидается? Заказчикстоимость часаПогрузкаСтоимость...Заказчик1100500...Заказчик1200400...Заказчик2100700... Или так надо? ЗаказчикПогрузкаСтоимость...Заказчик1900...Заказчик2700... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2016, 15:02 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Dima TЕсли на сервере допиливать, то через временную таблицу. Лучше сначала выбрать необходимое во временную таблицу, а потом выборка из нее.Для более сложных случаев совершенно согласен - оптимизатор начинает захлебываться, когда городишь сложные куски. У меня случай был - поменяли сервер на более мощный, в частности проц - с одноядерного на восьмиядерный. Так один из часто используемых запросов выборки стал выполняться 10 сек вместо 1 сек на одноядерном сервере. Оптимизатор радостно увидел возможность распараллеливания запроса и... лоханулся. Переход на временную таблицу решил проблему. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2016, 15:12 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Dima T, второй вариант. НО, я всеж буду разбивать на несколько таблиц следуя советам выше. Иначе такой огород получается.. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2016, 12:44 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Shocker.ProУ меня случай был - поменяли сервер на более мощный, в частности проц - с одноядерного на восьмиядерный. Так один из часто используемых запросов выборки стал выполняться 10 сек вместо 1 сек на одноядерном сервере. Оптимизатор радостно увидел возможность распараллеливания запроса и... лоханулся. Переход на временную таблицу решил проблему. OPTION (MAXDOP number) Configure the max degree of parallelism Server Configuration Option ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2016, 13:27 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Dima TЕсли на сервере допиливать, то через временную таблицу. Лучше сначала выбрать необходимое во временную таблицу, а потом выборка из нее.Сомнительное удовольствие. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2016, 13:31 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
mdm114Dima T, второй вариант. НО, я всеж буду разбивать на несколько таблиц следуя советам выше. Иначе такой огород получается.. тогда умножать внутри sum() Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2016, 13:35 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Спасибо, чуть попозже вернусь к этому запросу. Переделка одного влечет за собой попутно и переделку еще нескольких вещей. Сейчас закипел над таблицей с аналогичным вопросом: Реально ли все совместить в одном запросе? № Погрузка - Наладка - Обработка - Прочее1.----0----------200---------0-----------4002.----0-----------0---------400-----------03.----0----------400---------0-----------6004.---300----------0---------800-----------0 Нужно среднее значение по каждому виду работ. ---300---300---600--500 SELECT AVG(Погрузка) AS e1, AVG(Наладка) AS e2.. FROM Table.. В данном случае правильным подсчетам мешают нули? Ставить что то типа WHERE погрузка !=0 не вариант. Тогда не учитываются 2ая и 4ая строка в Наладке. Есть конечно вариант, разбить на четыре таблицы. А вот в одном запросе реально совместить? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2016, 11:26 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Код: sql 1.
А вообще, по-хорошему, именно NULL-ы, а не нули должны быть в базе, там где нет значения ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2016, 11:31 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Shocker.Pro, при NULL иногда приходится в коде через try что то делать. А это в свою очередь в определенных моментах такие тормоза добавляет ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2016, 11:56 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
mdm114иногда приходится в коде через try что то делатьЭто странно. Что например? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2016, 12:01 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Shocker.Pro, № . -н1-- н2--н3--н41. ---1----2----3---42. ---1----2----3---43 - --1---NULL-2---3 decimal dc= table.tbl[0].н1 decimal dc= table.tbl[1].н1 decimal dc= table.tbl[2].н1 ??? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2016, 13:04 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Я не очень понял, где тут повод для try Можно использовать проверку на null, можно использовать оператор ??, можно использовать тип decimal? вместо decimal... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2016, 13:21 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
а можно меня носом ткнуть в какой нить пример ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2016, 15:39 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Пример чего? Я не понял первичной задачи. В любом случае, try используется в первую очередь для перехвата исключений, генерируемых, как правило, ситуациями, когда что-то пошло не так. А если в программе изначально закладывается возможность, когда некое поле может принимать значение null, то это нормальная, не исключительная ситуация и try здесь никак не должен ее обрабатывать. По заполнение БД я говорю из опыта. Когда по логической сути задачи в БД отсутствие значение, то нужно заносит Null, а не какое-то искусственный заменитель типа 0 или -1 или других так называемых "волшебных" числе или строк. Тогда и вопрос с AVG не возник бы сам собой. В большинстве случаев такой подход оправдан, однако, возможно, в вашем конкретном случае оправдано использование нуля по каким-то специфическим причинам. Именно поэтому я просил привести пример. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2016, 16:08 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
ЗЫ: почему вы так странно оформляете таблицы? )))) 123456789101112 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2016, 16:10 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
в таблицу заносится результат вычислений. Берется фиксированная цена из таблицы № 1. И в таблицу номер два заносится уже произведение цены на количество. Соответсвенно, если кол-во ноль, то и в таблицу заносится ноль. Плюс там различные скидки и проч, соответсвенно все цены расходятся с базовой. Хочу увидеть усредненную По поводу таблички - Чет про запятые не дочитал. Первые разы с планшета писал - довольно ущербная штуковина. Видимо как то криво всплывающая подсказка вылезла ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2016, 16:36 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Shocker.Pro... Можно использовать проверку на null, можно использовать оператор ??, можно использовать тип decimal? вместо decimal... Мне безумно стыдно, но чет не доводилось до сих пор сталкиваться. Как ими пользоваться то? decimal? dc1; dc1 =db.table[0].expr; Ошибку выдает. Или надо GetValueOrDefault использовать? С двойным ? вообще не пойму decimal? dc1 = null; deciamal dc2 = dc1 ?? db.table[0].expr; ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2016, 14:44 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
mdm114decimal? dc1; dc1 =db.table[0].expr; Ошибку выдает.текст ошибки надо угадать? mdm114С двойным ? вообще не пойму decimal? dc1 = null; deciamal dc2 = dc1 ?? db.table[0].expr;непонятно, что не понятно. ?? позволяет заменить null на корректное значение, к примеру Код: c# 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2016, 15:18 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Shocker.Promdm114decimal? dc1; dc1 =db.table[0].expr; Ошибку выдает.текст ошибки надо угадать? Дык ругается, что значение для столбца expr равно DBNULL Shocker.Promdm114С двойным ? вообще не пойму decimal? dc1 = null; deciamal dc2 = dc1 ?? db.table[0].expr;непонятно, что не понятно. ?? позволяет заменить null на корректное значение, к примеру Код: c# 1. 2.
Я понял что меняет. Я думал что возможна сразу конструкция, которая вытягивает значение из db.table[0].expr и, в случае если оно DBNULL меняет на 0 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2016, 17:24 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
mdm114Дык ругается, что значение для столбца expr равно DBNULLну так dbnull и null не совсем одно и то же ) mdm114вытягивает значение из db.table[0].expr и, в случае если оно DBNULL меняет на 0ну так для этого есть тернарный оператор, либо можно сделать свой метод расширения для удобства ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2016, 23:19 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
спасибо, еще почитаю по этому поводу дополнительно и буду пробовать ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 11:21 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Вроде бы на ровном месте произошла еще одна странность Есть три таблицы 1. Описание товара - tbl1 2. Складские остатки - tbl_sklad 3. Продажи - tbl_sale Нужны суммы продаж и складских остатков 1.Складские остатки Код: sql 1. 2. 3. 4. 5.
выводит №уч карточки На складе482 214.16483 344.56493 208.76 тут суммы правильные 2. Сумма продаж Код: sql 1. 2. 3. 4. 5.
№ уч карточки Продажи482 NULL483 30493 18.10 тут тоже все суммы сходятся Далее пытаюсь Код: sql 1. 2. 3. 4. 5. 6. 7.
выводится какая то хрень. Че тут насуммировалось, непонятно.. №уч карточки На складе Продано482 214.16 NULL483 689.12 960.00493 417.52 380.10 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2016, 08:20 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
mdm114выводится какая то хреньЧтобы понять, почему хрень, посмотри результаты запроса без группировки: Код: sql 1. 2. 3. 4. 5. 6.
и сразу станет понятно ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2016, 12:16 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Сообщение 8120, уровень 16, состояние 1, строка 1 Column 'tbl1.id' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2016, 13:24 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Так не надо использовать агрегирующие функции, просто посмотри результат запроса без группировки ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2016, 13:34 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Я мож не допонял что-то, но первые два запроса с агрегирующими функциями и без них выдают один и тот же результат. Причем он правильный. Там в продажах у 493-й учетной карточки числятся два значения 9.20 и 8.90. Я уж и ограничения делал WHERE id= 493. Результат одинаковый ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2016, 19:09 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Еще раз. Забей на первый два запроса, они правильные и работают как надо. Ты не не понял, почему в третьем случае (когда ты присоединяешь сразу две таблицы), ты получаешь не те итоговые данные, которые ты ожидаешь. Чтобы понять - почему так, я предлагаю тебе выполнить не суммирующий не группирующий запрос (который я привел). Ты сразу увидишь и поймешь, в чем твоя ошибка. Думаю, что все, кто начинал работать с SQL через этот момент проходили. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2016, 20:22 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Так а что он должен вывести? В первой таблице 10 записей. Во второй две. Выводится хрень полная. Я так понимаю, что придется на два отдельных запроса разбить ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2016, 08:59 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
выводится не хрень полная, а перемножение двух присоединенных таблиц, то есть все возможные их сочетания. Таким образом, данные для суммирования задваиваются, затраиваются и т.п., соответственно, получается неверная сумма. Решение может быть таким: Код: sql 1. 2. 3. 4. 5. 6.
но, как говорилось выше, не всегда стоит увлекаться слишком навороченными подзапросами ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2016, 13:34 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
даа, чет мне такая подвыборка в голову не пришла. Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2016, 16:37 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Shocker.Pro, можно еще один вопрос? есть Код: sql 1. 2. 3. 4. 5. 6.
вывод: № st dateOutSumdltnMetrtnTotal54 8.00 2015-12-01 10:29:58.303 1.00 77.3337 77.333754 8.00 2015-12-01 10:29:59.067 1.00 77.3337 77.333754 8.00 2015-12-01 10:29:59.817 1.00 77.3337 77.333754 8.00 2015-12-01 10:30:00.627 1.00 77.3337 77.333754 8.00 2015-12-01 10:30:01.563 1.00 77.3337 77.333754 8.00 2015-12-01 10:30:02.320 1.00 77.3337 77.3337 Группировка по дате отсутствует, так как(насколько я правильно понял) разное время. Это как то можно обойти в запросе? Чтобы как то игнорировалось время, а dateOut воспринималась как ShortDate штоле.. т.е. нужно № st dateOutSumdltnMetrtnTotal54 8.00 2015-12-01 6 77.3337 77.3337*6 Или опять же проблема в изначально неправильном подходе к занесению даты в таблицу? При занесении значение берется из DateTimePicker.Value... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.02.2016, 21:10 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Можно, конечно, группировать и выводить округленную дату, но это плохое решение, так как сортировка/группировка/отбор по выражению исключает использование индексов. Лучше, если время не требуется в базе, не писать его туда. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 08:37 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 08:41 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
спасибо за советы ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 13:05 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
стал пробовать ругается. Type date is not a defined system type. В нете смотрел синтаксис. Вроде такой же как в Вашем примере. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2016, 09:03 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Ошибка MS SQL или .Net ? версия MS SQL какая? У меня работает из MSSQL 2012 Management Studio Код: sql 1. 2. 3. 4.
Если старый MSSQL (тип date в 2008 вроде появился), то надо использовать datediff() или dateadd() (точно не помню). Тогда тип останется datetime ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2016, 09:28 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Вот по-старому Код: sql 1.
Взято тут 15115537 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2016, 09:48 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Dima T, Пробовал в Managment Studio. 2008. Попробую попозже в проекте. Не думал, что разница есть.. Спасибо, отпишусь ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2016, 14:07 |
|
|
start [/forum/topic.php?all=1&fid=17&tid=1349420]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
136ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
83ms |
get tp. blocked users: |
1ms |
others: | 252ms |
total: | 519ms |
0 / 0 |