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

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

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2009, 14:23   #11
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

where 0=0 для красоты

а зачем тебе в запросе ИНТО?
делай без него (если только это не кусок из ХП):
Код:
SELECT code_c, (prokat.endd - prokat.startt)*prokat.sbor
FROM prokat
soleil@mmc вне форума Ответить с цитированием
Старый 27.10.2009, 14:25   #12
reBOOK
Пользователь
 
Аватар для reBOOK
 
Регистрация: 27.10.2009
Сообщений: 24
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Насчет интербэйса. Если я правильно помню, оператор INTO допускается использовать только в триггерах и хранимых процедурах, но не во внешнем SQL-запросе...
а зачем же тогда в описании команды select воткнули?
reBOOK вне форума Ответить с цитированием
Старый 27.10.2009, 14:35   #13
reBOOK
Пользователь
 
Аватар для reBOOK
 
Регистрация: 27.10.2009
Сообщений: 24
По умолчанию

Цитата:
Сообщение от soleil@mmc Посмотреть сообщение
where 0=0 для красоты

а зачем тебе в запросе ИНТО?
делай без него (если только это не кусок из ХП):
Код:
SELECT code_c, (prokat.endd - prokat.startt)*prokat.sbor
FROM prokat
просто полностью задача звучит так:
"Для каждого кинотеатра подсчитать сумму реального сбора с проката фильмов за апрель Х года."
думаю не обойтись без инто..
если учесть что прокат может начинаться в середине апреля напрммер...

хотел сделать примерно так:

SELECT code_c, (prokat.endd - prokat.startt)*prokat.sbor
FROM prokat
where prokat.startt < '01.04.01'
and prokat.endd > '30.04.01'
UNOIN
select code_c, ('30.04.01' - prokat.startt)*prokat.sbor
from prokat
where prokat.startt > '01.04.01'
and prokat.startt < '30.04.01'
and prokat.endd > '30.04.01'
UNION ...

но чувствую что это не то что надо...
reBOOK вне форума Ответить с цитированием
Старый 27.10.2009, 14:39   #14
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Вообще-то INTO - оператор создания новой физической таблицы.
Вы уверены, что она вам нужна?
mihali4 вне форума Ответить с цитированием
Старый 27.10.2009, 14:43   #15
reBOOK
Пользователь
 
Аватар для reBOOK
 
Регистрация: 27.10.2009
Сообщений: 24
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Вообще-то INTO - оператор создания новой физической таблицы.
Вы уверены, что она вам нужна?
а есть варианты решения данной задачи без использования into?

ИМХО легче будет в начале посчитать сбор, где code_с одинаковый, и заполнить все в таблицу через into, а потом уже обращаться непосредственно к нему..
reBOOK вне форума Ответить с цитированием
Старый 27.10.2009, 14:46   #16
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

тхаха
ну раз в описании команды селект есть еще хэвинг, план, фор апдейт и т.п. - почему ты все это не использовал?

шучу-шучу
брать нужно то, что реально следует применять

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

апд
для простого случая запрос выглядит так
Код:
select 
  c.name, 
  sum((p.endd - p.startt) * p.sbor) amount
from 
  cinema c, 
  prokat p
where 0=0
  and c.code_c = p.code_c
  and (trunc(p.startt, 'mm') = trunc(to_date('05.10.2009', 'DD.MM.YYYY'), 'mm')
    or trunc(p.endd, 'mm') = trunc(to_date('05.10.2009', 'DD.MM.YYYY'), 'mm'))
group by c.name
order by c.name
вместо trunc() возможно придется поюзать какую-нить другую функу в ИБ для обрезания даты до месяц-год

Последний раз редактировалось soleil@mmc; 27.10.2009 в 14:53.
soleil@mmc вне форума Ответить с цитированием
Старый 27.10.2009, 14:54   #17
reBOOK
Пользователь
 
Аватар для reBOOK
 
Регистрация: 27.10.2009
Сообщений: 24
По умолчанию

Цитата:
Сообщение от soleil@mmc Посмотреть сообщение
тхаха
ну раз в описании команды селект есть еще хэвинг, план, фор апдейт и т.п. - почему ты все это не использовал?

шучу-шучу
брать нужно то, что реально следует применять

ну и по теме вопроса - нормально: к середине 2й страницы наконец-то и сама задача проясняется
а как учитывается такой факт в суммировании сборов: если фильм был в прокате с 1 марта по 1 июня? то какая часть из этого сбора должна пойти в отчет - вся сумма (т.е. учитывается факт попадания периода проката в отчетный период) или доля суммы пропорционально отчетному периоду (т.е. берем общее кол-во дней проката, кол-во дней в интересующем периоде и высчитываем долю)?
а данном случае берется только ту часть, которая попадает под нужный нам период, тоесть 30 дней, которые идет в апреле.
reBOOK вне форума Ответить с цитированием
Старый 27.10.2009, 15:00   #18
reBOOK
Пользователь
 
Аватар для reBOOK
 
Регистрация: 27.10.2009
Сообщений: 24
По умолчанию

обрезать до месяца не нужно, т.к. в случае, когда прокат начинается в середине месяца, нужно найти сбор за количество дней, которое идет в этом месяце, тоесть, если прокат начался 5-го чилса, тогда нужно посчитать сбор за 25 дней, и прибавить все это дело к уже имеющемуся сбору данного кинотеатра... так же с прокатами, где дата конца проката попадает в середину апреля, и к прокату, где прокат полностью может находиться в середине месяца.
reBOOK вне форума Ответить с цитированием
Старый 27.10.2009, 15:04   #19
reBOOK
Пользователь
 
Аватар для reBOOK
 
Регистрация: 27.10.2009
Сообщений: 24
По умолчанию

а с помощью into хотел за все прокаты найти в начале сбор, и результаты заполнить в новую таблицу, а уже во внешнем запросе суммировать нужные мне сборы...

извиняюсь за "трипл" пост, больше не буду..

Последний раз редактировалось reBOOK; 27.10.2009 в 15:20.
reBOOK вне форума Ответить с цитированием
Старый 27.10.2009, 15:10   #20
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Читайте правила форума.
Несколько идущих подряд ваших постов квалифицируются как флуд и влекут штраф.
Как вы думаете, для чего существует кнопка "Правка"???
mihali4 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос Dawystrik SQL, базы данных 1 20.09.2009 20:39
Запрос Ruska882009 Помощь студентам 2 25.02.2009 03:02
Запрос White БД в Delphi 0 18.09.2008 09:30
запрос ссылается на несвязанный с ним запрос kolebatel SQL, базы данных 0 11.06.2008 12:50