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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2009, 12:52   #1
reBOOK
Пользователь
 
Аватар для reBOOK
 
Регистрация: 27.10.2009
Сообщений: 24
По умолчанию запрос

нужно написать запрос: для каждого кинотеатра подсчитать сумму реального сбора с проката фильмов.
имеются таблицы: cinema (c полями code_c, name) и таблица prokat (code_c, startt, endd, sbor).
формула расчета сбора: (prokat.endd-prokat.startt)*prokat.sbor.

SELECT cinema.name, sum((prokat.endd - prokat.startt)*prokat.sbor)
FROM cinema, prokat
WHERE (cinema.code_c = prokat.code_c);

в данном случае выдается ошибка "SQL error code = -104
invalid column reference"

SELECT code_c, (prokat.endd - prokat.startt)*prokat.sbor
FROM prokat
INTO tab1;
а сдесь: "Token unknown - line 2, char -1 into"

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

Цитата:
- Все говорят, что майонез "Скит" самый вкусный. А я не верю...
- А вы его есть пробовали?
А вы не пробовали посмотреть синтаксис команды SELECT?
Например, вот тут:
http://msdn.microsoft.com/ru-ru/library/ms189499.aspx
mihali4 вне форума Ответить с цитированием
Старый 27.10.2009, 13:04   #3
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

забыл написать group by в первом варианте

Код:
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
group by c.name
soleil@mmc вне форума Ответить с цитированием
Старый 27.10.2009, 13:11   #4
reBOOK
Пользователь
 
Аватар для reBOOK
 
Регистрация: 27.10.2009
Сообщений: 24
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
А вы не пробовали посмотреть синтаксис команды SELECT?
Например, вот тут:
http://msdn.microsoft.com/ru-ru/library/ms189499.aspx
пробовал. во втором варианте вроде делал все как написано было... а выдала ошибку..не знаю почему...

еще, работаю в nterbase, если это важно)
reBOOK вне форума Ответить с цитированием
Старый 27.10.2009, 13:15   #5
reBOOK
Пользователь
 
Аватар для reBOOK
 
Регистрация: 27.10.2009
Сообщений: 24
По умолчанию

Цитата:
Сообщение от soleil@mmc Посмотреть сообщение
забыл написать group by в первом варианте

Код:
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
group by c.name
работает, огромное спасибо!
а можешь обьянить ошибки? буду благодарен. особенно момент 0=0?
reBOOK вне форума Ответить с цитированием
Старый 27.10.2009, 13:26   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от reBOOK Посмотреть сообщение
пробовал. во втором варианте вроде делал все как написано было... а выдала ошибку..не знаю почему...

еще, работаю в nterbase, если это важно)
По-моему, проще некуда...
Оператор INTO идет первым в синтаксисе SELECT.
У вас же он - в конце...
mihali4 вне форума Ответить с цитированием
Старый 27.10.2009, 13:54   #7
reBOOK
Пользователь
 
Аватар для reBOOK
 
Регистрация: 27.10.2009
Сообщений: 24
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
По-моему, проще некуда...
Оператор INTO идет первым в синтаксисе SELECT.
У вас же он - в конце...
into tab1
select code_c
from prokat; так? тоже ошибка...

SELECT [TRANSACTION transaction]
[DISTINCT | ALL]
{* | <val> [, <val> …]}
[INTO :var [, :var …]]
FROM <tableref> [, <tableref> …]
[WHERE <search_condition>]
[GROUP BY col [COLLATE collation] [, col [COLLATE collation] …]
[HAVING <search_condition>]
[UNION <select_expr> [ALL]]
[PLAN <plan_expr>]
[ORDER BY <order_list>]
[FOR UPDATE [OF col [, col …]]];
........

такой синтаксис в хелпе описан..
reBOOK вне форума Ответить с цитированием
Старый 27.10.2009, 13:58   #8
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
такой синтаксис в хелпе описан..
Внимательно смотрим:
SELECT...INTO...FROM...WHERE и так далее.
mihali4 вне форума Ответить с цитированием
Старый 27.10.2009, 14:04   #9
reBOOK
Пользователь
 
Аватар для reBOOK
 
Регистрация: 27.10.2009
Сообщений: 24
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Внимательно смотрим:
SELECT...INTO...FROM...WHERE и так далее.
у меня into вообще не в каком месте не воспринимается:

select *
into t
from a
where ..

не так,

into t
select *
from a
where ..

не так,

select *
from a
where ..
into t

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

Насчет интербэйса. Если я правильно помню, оператор INTO допускается использовать только в триггерах и хранимых процедурах, но не во внешнем SQL-запросе...
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