Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Суммирование нескольких полей 
V
    Опции темы
Beltar
Дата 25.5.2011, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: нет
Всего: 7



Есть таблица с моделями продукции вида:

1) Id
2) Название

И есть таблица выработки оборудования:

1) Id_МоделиЛев
2) ВыработкаЛев
3) Id_МоделиПрав
4) ВыработкаПрав

Т. е. оборудование (конкретно у меня это вулканизаторы покрышек), имеет до 2-х производственных блоков, каждый из которых в принципе может работать один, или они одновременно производят разные модели. Чаще всего, конечно, работают оба и делают одну и ту же модель, поэтому такая организация удобнее для ввода данных.

Нужно получить распределение выработки по моделям безотносительно того, где именно продукция произведена. Можно ли это сделать одним запросом?


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
Zloxa
Дата 25.5.2011, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Код

select Id_МоделиЛев Id_Модели, ВыработкаЛев Выработка from табла
union all
select Id_МоделиПрав Id_Модели, ВыработкаПрав Выработка from табла



--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
triclosan
Дата 25.5.2011, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 515
Регистрация: 18.8.2006

Репутация: 3
Всего: 12



организация данных имхо не очень удобна, если работает один, а второй нет - получаем зависщее в воздухе поле, не несущее информации. Конечно если ваш комплекс включается одной кнопкой (т.е. оба агрегата сразу) и  запись отражает включение прибора, то может быть и сойдет.

Код

select id, sum(v) from
(select m.id, v.virobot_l as v
from models m, virobot v
where m.id = v.modelid_l
union all 
select m.id, v.virobot_r as v
from models m, virobot v
where m.id = v.modelid_r) t
group by id


Это сообщение отредактировал(а) triclosan - 25.5.2011, 11:11
PM MAIL   Вверх
Beltar
Дата 25.5.2011, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: нет
Всего: 7



В принципе подходит, по крайней мере, просуммировать пару строк в одном запросе не сильно увеличит геморность. Благодарю.

Цитата

организация данных имхо не очень удобна, если работает один, а второй нет - получаем зависщее в воздухе поле, не несущее информации. Конечно если ваш комплекс включается одной кнопкой (т.е. оба агрегата сразу) и  запись отражает включение прибора, то может быть и сойдет.


Некоторое количество NULL-полей не критично, просто не тот объем. Запись отражает ввод данных вручную, т. е. например, слева сварили 9 покрышек модели X, а справа 10 модели Y. Если бы ввод был автоматизированным, то правильно было бы хранить инфу о каждой отдельной варке.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0437 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.