Форум: "Базы";
Текущий архив: 2006.12.17;
Скачать: [xml.tar.bz2];
ВнизПравильный запрос или другой метод расчета Найти похожие ветки
← →
Megabyte © (2006-10-10 13:02) [0]Таблица:
Prihod(ID_prih, ID_oborudovaniya,
Cena, ID_valuta, Kol_vo, ID_Sklad_prihod(на который пришло оборудование), ID_sklad_rashod(с которого пришло оборудование), Date_prih)
Надо формировать итоговый отчет по одному складу, суммируя всё оборудование.
Вот запрос для суммирования, например, только прихода:select O.Type_Oborud, O.PART_NUM, O."Eng_Description", sum(P.KOL_VO)
from PRIHOD P, OBORUDOVANIE O, SKLADI S, type_oborudovania T
where (P.ID_Oborud = O.ID_Oborud) and (O.type_oborud = T.id_type) and (P.Sklad_prih = S.ID_Skld) and (S.Name_skld = "название склада")
group by O.Part_Num, O."Eng_Description", O.Type_Oborud,
Но также надо учитывать еще расход со склада. Не совсем понимаю, как это сделать в одном запросе.
Вот примерный вариант:select O.Type_Oborud, O.PART_NUM, O."Eng_Description", (sum(P.KOL_VO)-sum(R.kol_vo)) as SUMM
from PRIHOD P, OBORUDOVANIE O, SKLADI S, type_oborudovania T,
PRIHOD R, OBORUDOVANIE B, SKLADI K, type_oborudovania Y
where (P.ID_Oborud = O.ID_Oborud) and (O.type_oborud = T.id_type) and
(P.Sklad_prih = S.ID_Skld) and (S.Name_skld = "название склада") and
(R.ID_Oborud = B.ID_Oborud) and (B.type_oborud = Y.id_type) and
(R.Sklad_rash = K.ID_Skld) and (K.Name_skld = "название склада")
group by O.Part_Num, O."Eng_Description", O.Type_Oborud,
B.Part_Num, B."Eng_Description", B.Type_Oborud
Он неправильно группирует записи.
Есть 2 записи с приходом оборудования(разного) на 10 и 12 детелей и с расходом оборудования(отличающегося от первых 2-х) на 23 детали.
Запрос возвращает результат: -11, -13; т.е. по идее идет вычет расхода, но не различает разное оборудование(уникальное по полю Part_Num).
Как сделать, чтобы правильно работал запрос, т.е. по данному примеру он должен вернуть: 10, 12, -23?
Или в одном запросе это не сделать?
← →
Sergey13 © (2006-10-10 13:19) [1]> по данному примеру он должен вернуть: 10, 12, -23?
В строку? Так нельзя.
В столбик? Надо отдельно получать плюса и минуса через UNION.
← →
Megabyte © (2006-10-10 13:38) [2]
> 1)В столбик? 2)Надо отдельно получать плюса и минуса через UNION.
1) Само собой в столбик!
2)Ну я думал об этом варианте, просто фиг знает, м.б. кто-то делал в один запрос...
← →
Sergey13 © (2006-10-10 13:53) [3]> [2] Megabyte © (10.10.06 13:38)
Можно и в один запрос, но на другой структуре (может можно и на этой, но мне лень и некогда думать 8-). Желательно ввести ТИП ОПЕРАЦИИ, а не кодировать это складами.
← →
Megabyte © (2006-10-10 13:59) [4]
> Sergey13 © (10.10.06 13:53) [3]
> [2] Megabyte © (10.10.06 13:38)
Желательно ввести ТИП ОПЕРАЦИИ, а не кодировать это складами.
Тогда каждая запись будет удваивать информацию, т.к. одно действие выливается в 2: приход на один склад и расход на другой. Вот в чем трабл.
Я тут думал использовать временную таблицу, куда записывать записи с различным знаком(приход +, расход -) и там суммировать по складу.
Кстати, каким образом работать(создавать и т.д.) с временными таблицами, просто краем уха слышал про сабж, но никогда не работал.
← →
Sergey13 © (2006-10-10 14:04) [5]> [4] Megabyte © (10.10.06 13:59)
> Тогда каждая запись будет удваивать информацию
Ну и что? Зато можно например учитывать потери в пути. 8-)
> Я тут думал использовать временную таблицу
Не надо. Геморойно, да и не к чему.
Кстати, в 2-ке временные таблицы появились или ты решил постоянные использовать как а-ля временные?
← →
Megabyte © (2006-10-10 14:43) [6]
> Кстати, в 2-ке временные таблицы появились или ты решил постоянные использовать как а-ля временные?
Честно говоря, я у тебя хотел узнать, есть ли там временные таблицы. %)
Как постоянные использовать - это я понимаю.
← →
Sergey13 © (2006-10-10 14:46) [7]> [6] Megabyte © (10.10.06 14:43)
8-)
Я в глаза ее еще не видел. Мне оно пока без надобности. Я с полторашки пока слезать не собираюсь.
← →
atruhin © (2006-10-10 19:50) [8]> Кстати, в 2-ке временные таблицы
Нет возможно появяться в 2.1
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.12.17;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.042 c