Добрый вечер Уважаемые пилоты, я начинающий программист и появилась задачка, решить которую пока затрудняюсь.
Помогите пожалуйста с решением, а я попробую разобраться во всем, ибо обратиться больше не к кому.
Буду благодарен всем кто откликнется, надеюсь и уповаю на рускомьюнити.
1. По программированию:
Дано:
Структура содержащая в себе два вида объектов
1. Узлы
2. Ветви
Имеется стартовый узел (корень). Этот узел является текущим изначально.
Объекты имеют уникальный номер.
Объекты не имеют перекрестных связей - у объекта один родитель (тип дерево).
Узел содержит в себе информацию о дочерних узлах и ветвях (коллекция номеров).
Ветвь содержит в себе только свой собственный номер.
Инструменты:
1. Function Get () return Coll[..]
Функция без параметров - возвращает коллекцию номеров (Coll[..]) объектов находящихся в текущем узле. Нумерация элементов коллекции начинается с единицы. Каждый элемент коллекции содержит номер только одного объекта. У коллекции есть параметр Coll.count который показывает количество элементов в коллекции на текущий момент.
2. Function Go (nom) return Bolean
Функция в качестве параметра принимает номер узла и делает этот узел текущим. В случае успешной работы возвращает True, в противном случае False (текущим остается узел из которого была запущена функция).
Задание:
Написать процедуру, которая поместит в коллекцию Rez[..] номера ветвей находящихся в стартовом, а также во всех вложенных узлах.
-----------------------------------------
2.По SQL
Имеется схема:
create table sales( -Продажи
sales_date date not null, -Дата продажи
cod_good number(13) not null, -Товар
quantity number(9,3) not null, -Количество
price number(11,3) not null, -Цена в рублях
);
create table CURRENCY( -Курсы валют
DATE_OF_CUR DATE not null, -Дата
KURS NUMBER(9,4) not null, -Курс валюты по отношению к рублю
);
create unique index
CURR#DATE_OF_CUR on CURRENCY (DATE_OF_CUR);
Задание:
Необходимо посчитать оборот за период времени в валюте.
Донат На хостинг |
ISK за переводы до 75kk за 1000зн. |
Хроники EVE Сборник |
Новичкам Полезная информация |

Гуру программисты помогите пожалуйста :)
Автор Thor234, Oct 27 2008 20:23
#2
Отправлено 28 October 2008 - 10:59

На каком языке нужно писать ответ на первый вопрос? Там все элементарно - рекурсивно юзаем Get() и Go() по всем узлам. Этож обычное дерево.
По второму вопросу навскидку:
SELECT
sales.sales_date,
sales.cod_good,
SUM(sales.price/currency.kurs)*sales.quantity) AS total
FROM
sales
LEFT JOIN
currency
ON
sales.sales_date = currency.date_of_cur
GROUP BY
sales.sales_date
Это вернет таблицу с оборотами по каждому дню. Если нужен период, добавляем к запросу следующие строки:
WHERE
sales.sales_date > нижняя_дата
AND
sales.sales_date < верхняя_дата
Вот. Как-то так.
По второму вопросу навскидку:
SELECT
sales.sales_date,
sales.cod_good,
SUM(sales.price/currency.kurs)*sales.quantity) AS total
FROM
sales
LEFT JOIN
currency
ON
sales.sales_date = currency.date_of_cur
GROUP BY
sales.sales_date
Это вернет таблицу с оборотами по каждому дню. Если нужен период, добавляем к запросу следующие строки:
WHERE
sales.sales_date > нижняя_дата
AND
sales.sales_date < верхняя_дата
Вот. Как-то так.
#3
Отправлено 29 October 2008 - 16:43

Большое спасибо, со вторым разобрался. Вот, что получилось:
select sum(price*quantity/kurs) as Oborot,
cod_good as CodTovara from sales, currency
where cod_good = 'Код товара'
and (sales_date between '01.1.2008' and '31.12.2008')
and (sales_date = date_of_cur)
group by cod_good
Проверил, вроде все работает так как нужно, работал в СУБД Interbase.
А вот с первым беда, никак не могу разобраться. Понятно, что нужно использовать рекурсию, но вот как это все грамотно описать хотя бы наброском никак не разберусь. Использовать нужно Object Pascal (Delphi). Буду признателен всем кто поможет разобраться с кодом.
select sum(price*quantity/kurs) as Oborot,
cod_good as CodTovara from sales, currency
where cod_good = 'Код товара'
and (sales_date between '01.1.2008' and '31.12.2008')
and (sales_date = date_of_cur)
group by cod_good
Проверил, вроде все работает так как нужно, работал в СУБД Interbase.
А вот с первым беда, никак не могу разобраться. Понятно, что нужно использовать рекурсию, но вот как это все грамотно описать хотя бы наброском никак не разберусь. Использовать нужно Object Pascal (Delphi). Буду признателен всем кто поможет разобраться с кодом.

1 посетителей читают тему
0 members, 1 guests, 0 anonymous users