Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.01.14;
Скачать: [xml.tar.bz2];

Вниз

вопрос по запросу   Найти похожие ветки 

 
SOFTMASTER   (2001-12-09 19:54) [0]

Всем привет!
Столкнулся с проблемой:
есть у меня база данных, участок, который сейчас рассматривается выглядит следующим образом: Есть таблица, в нее забивается основная информация- дата оформления, номер документа и т.п.
Подчиненная таблица выглядит след. образом: связь по номеру документа, имя исполнителя (код) и сумма услуги.
Есть таблица исполнителей: там код и имя.
Теперь мне нужно получить информацию следующего вида: вывести всех исполнителей и посчитать для каждого сумму услуг за определенный день.Таким образом, WHERE можно использовать, но он выводит только записи , которые работали в этот день, а надо всех, даже пустых . Надо использовать что-то типа JOIN, но как это сделать правильно?
Использовал конструкцию

select Workers.Name,sum(ServItems.Price)
from (Workers left join servitems
on
ServItems.Wname=Workers.Code
left
join Servs
on (Servs.Dat_="05.12.2001"
and Servs.DocNum=ServItems.DocNum))

group by Workers.Name

но не работает отбор по дате, он выдает полную сумму за все время существования.
INNER JOIN тоже используется как WHERE, так что не получается.
Мастера, подскажите как лучше сделать, ПОЖАЛУЙСТА!


 
evgeg   (2001-12-09 20:28) [1]

А хранимой процедурой не хочешь воспользоваться?
В ней это элементарно делается.


 
Softmaster   (2001-12-09 20:55) [2]

>evgeg
Как ею воспользоваться?


 
evgeg   (2001-12-09 21:23) [3]

Надо создать процедуру:

create procedure otchet
(day date)
returns
(Name varchar (30),
Summ double precision)
as
declare variable Code integer;
begin
for select Code, Name from Workers
into :Code, :Name
do
begin
summ = null;
select sum (SI.Price) from ServItems SI, Servs S
where SI.WName = :Code and SI.DocNum = S.DocNum and S.Dat_ = :day
into :summ;
if (summ is null) then summ = 0;
suspend;
end
end


Выбов процедуры:

select * from otchet ("01.11.2001")


 
Softmaster   (2001-12-10 20:30) [4]

СПАСИБО



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.01.14;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.005 c
3-42394
Dim
2001-12-10 09:20
2002.01.14
Аналог в InterBase функции SUBSTRING MSSQL 6.5


7-42584
Leon
2001-08-23 22:17
2002.01.14
Серийный номер материнской платы


1-42471
dimonf
2001-12-24 17:15
2002.01.14
Как быстро выводить (прорисовывать) графическую информацию на Canvas?


1-42484
GARIK_PR
2001-12-25 10:43
2002.01.14
Помогите чем сможете в области ActiveX программирования.


3-42367
Nest
2001-11-29 12:32
2002.01.14
Можно ли работать с временной таблицей (напр. #tmp_tab_name ) через Ttable?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский