Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.01.2014, 22:16   #1
ayPinki
Пользователь
 
Регистрация: 11.12.2009
Сообщений: 97
По умолчанию манипуляции над выдачей sql запроса

при совпадении поля Name1_1(это nom1.Name1) нужно суммировать их Amount1(это composition.Amount) - я думаю вы поняли смысл(чтобы сохранились только уникальные записи Name1_1, с суммированным кол-вом значений принадлежащих им полей Amount1).
на скрине показано)
код моего запроса Query1 -
Код:
 Select  pl1.Datemy,pl1.Amount, Nomenclature.Name1,composition.Code_of_part, composition.Amount, nom1.Name1
From 'plan' as pl1
Left outer join nomenclature on nomenclature.Code_of_element= pl1.Code_of_product
Left outer join composition on composition.code_of_product=pl1.Code_of_product
Left outer join nomenclature as nom1 on nom1.Code_of_element=composition.Code_of_part
where pl1.Datemy>=:StartDate and  pl1.Datemy<=:StartDate
помогите пожалуйста, как это сделать, я не силён в такого рода манипуляциях(
Изображения
Тип файла: jpg Безымянный.jpg (23.4 Кб, 144 просмотров)

Последний раз редактировалось ayPinki; 31.01.2014 в 22:26.
ayPinki вне форума Ответить с цитированием
Старый 31.01.2014, 22:19   #2
J1Mmy
Пользователь
 
Аватар для J1Mmy
 
Регистрация: 10.05.2012
Сообщений: 24
По умолчанию

Так как у Name1_1 разные Name1, то они не будут связываться, ибо нарушается целостность данных. Грубо говоря. объедините вы с разными значениями Name1. Что тогда произойдет с этим полем? первое значение будет? или второе? или оба через запятую?
J1Mmy вне форума Ответить с цитированием
Старый 31.01.2014, 22:23   #3
ayPinki
Пользователь
 
Регистрация: 11.12.2009
Сообщений: 97
По умолчанию

Цитата:
Сообщение от J1Mmy Посмотреть сообщение
Так как у Name1_1 разные Name1, то они не будут связываться, ибо нарушается целостность данных. Грубо говоря. объедините вы с разными значениями Name1. Что тогда произойдет с этим полем? первое значение будет? или второе? или оба через запятую?
забыл добавить! другие поля мне и не нужны! вывел так, для общей картины! только Name1_1 и Amount1.
ayPinki вне форума Ответить с цитированием
Старый 31.01.2014, 22:25   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

GROUP BY по наименованию и SUM(количество)
И Table в пролете, только Query
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 31.01.2014, 22:28   #5
ayPinki
Пользователь
 
Регистрация: 11.12.2009
Сообщений: 97
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
GROUP BY по наименованию и SUM(количество)
И Table в пролете, только Query
ой, я что то Table спутал с dbgrid) да та строка ошибочна.
а как это? в этом же запросе писать? научите пожалуйста(
ото я ток выводить могу пока...

Цитата:
Сообщение от Аватар Посмотреть сообщение
GROUP BY по наименованию и SUM(количество)
И Table в пролете, только Query
Код:
Select  pl1.Datemy,pl1.Amount, Nomenclature.Name1,composition.Code_of_part, SUM(composition.Amount), nom1.Name1
From 'plan' as pl1
Left outer join nomenclature on nomenclature.Code_of_element= pl1.Code_of_product
Left outer join composition on composition.code_of_product=pl1.Code_of_product
Left outer join nomenclature as nom1 on nom1.Code_of_element=composition.Code_of_part
where pl1.Datemy>=:StartDate and  pl1.Datemy<=:StartDate
Group by  nom1.Name1
правильно ли?

Последний раз редактировалось Stilet; 01.02.2014 в 11:05.
ayPinki вне форума Ответить с цитированием
Старый 02.02.2014, 20:58   #6
ayPinki
Пользователь
 
Регистрация: 11.12.2009
Сообщений: 97
По умолчанию

уважаемые, ну спасайте! исправьте (

нужно при совпадении поля Name1_1(равнозначно определяется полем Code_of_part т.е. это код и его расшифровка) суммировалось поле pll...
смог добиться вот такого -
Код:
Select  pl1.Datemy,Nomenclature.Name1,composition.Code_of_part,pl1.Amount,composition.Amount,  sum(composition.Amount*pl1.Amount) as pll , nom1.Name1
From 'plan' as pl1
Left outer join nomenclature on nomenclature.Code_of_element= pl1.Code_of_product
Left outer join composition on composition.code_of_product=pl1.Code_of_product
Left outer join nomenclature as nom1 on nom1.Code_of_element=composition.Code_of_part
where pl1.Datemy>=:StartDate and  pl1.Datemy<=:StartDate 
Group by pl1.Datemy,Nomenclature.Name1,composition.Code_of_part,pl1.Amount,composition.Amount  , nom1.Name1
здесь Group by - не работает, его что добавляй, что нет, всё равно получиться одно и то же, т.к. туда надо вписывать ВСЕ поля что в запросе select используются - тупость получается.
помогите((((((
Изображения
Тип файла: jpg 555.jpg (19.9 Кб, 147 просмотров)
ayPinki вне форума Ответить с цитированием
Старый 02.02.2014, 21:13   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Вот не пойму что хочется - то ли сгруппировать, то ли нет. Если сгруппировать, то по чем. Нет внятного объяснения. Если есть A 1 C и B 2 C и сгруппировать по C, то останется 3 С. Места для А и В нет
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.02.2014, 21:18   #8
ayPinki
Пользователь
 
Регистрация: 11.12.2009
Сообщений: 97
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Вот не пойму что хочется - то ли сгруппировать, то ли нет. Если сгруппировать, то по чем. Нет внятного объяснения. Если есть A 1 C и B 2 C и сгруппировать по C, то останется 3 С. Места для А и В нет



сгруппировать по Code_Of_part(этот код однозначно определяет Name1_1 -как бы проверять то мы будем по коду, как пологается, а не по строке) , + просуммировать поле pll для этих совпадающих Code_Of_part .
вывод должен быть только 2 столбца- Name1_1 и pll!( дата итак в есть сверху )
по моему всё понятно(
помогите пожалуйста
ayPinki вне форума Ответить с цитированием
Старый 02.02.2014, 21:34   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
SELECT nom1.Name1,sum(composition.Amount*pl1.Amount) as pll
  FROM 'plan' as pl1
    Left outer join composition on composition.code_of_product=pl1.Code_of_product
    Left outer join nomenclature as nom1 on nom1.Code_of_element=composition.Code_of_part
  where pl1.Datemy>=:StartDate and  pl1.Datemy<=:StartDate
  GROUP BY composition.Code_of_part,nom1.Name1
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.02.2014, 22:17   #10
ayPinki
Пользователь
 
Регистрация: 11.12.2009
Сообщений: 97
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Код:
SELECT nom1.Name1,sum(composition.Amount*pl1.Amount) as pll
  FROM 'plan' as pl1
    Left outer join composition on composition.code_of_product=pl1.Code_of_product
    Left outer join nomenclature as nom1 on nom1.Code_of_element=composition.Code_of_part
  where pl1.Datemy>=:StartDate and  pl1.Datemy<=:StartDate
  GROUP BY composition.Code_of_part,nom1.Name1
спасибо, просто я так и думал, запрос загромоздил фиговой тучей ненужных элементов(
изучу ваш подход. завтра. )
ayPinki вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Манипуляции над объектами ЯВУ в MASM notHaker Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 04.08.2011 22:38
формирование SQL запроса Ntlegend SQL, базы данных 1 25.02.2010 18:41
Удаление строки с помощью SQL запроса (Query1.SQL.ADD('Delete....')) Schutze Помощь студентам 6 29.11.2009 22:15
Поломал голову над SQL запросом из 5-ти таблиц. Возможно ли это? semnily SQL, базы данных 1 06.04.2009 12:24