Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Запрос на SQL.  (Прочитано 9591 раз)
0 Пользователей и 1 Гость смотрят эту тему.
cvaleriy
Гость
« : 01-05-2004 08:18 » 

Есть таблица t1(id - primary int, name - varchar). t2(id pimary int, t1_id int, field1 float, field2 int).
Добавляю в t2 через stored proc

Код:

create procedure ins_t2 )field1 float, field2 int, field3 varchar:
as
begin
insert into t2 values )gen_id)t2_id_gen,1::,
{field1, {field2
:

и тут проблема - как написать и возможно ли вообще что то вида
select id from t1 where t1.name = field3
чтобы select вернул значение и оно было внесено в t2 ? Тут же в процедуре ? t2.t1_id связан внешней связью с t1.id.
Понятно обьяснил ? Или мне проще тянуть t1, в приложении разбирать id и потом передавать уже в процедуру готовое значение ?
Записан
Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 03-05-2004 07:10 » 

Цитата
Понятно обьяснил?

К сожалению не очень.  Жаль

смотрим структуру t2 по полям и что добавляем:
1)ID     int, primary  - gen_id(t2_id_gen,1)
2)t1_id  int               - :field1  
3)field1 float            -  :field2
4)field2 int               -  ?

 :?:  в field2 добавляем varchar?

Цитата
и тут проблема - как написать и возможно ли вообще что то вида
select id from t1 where t1.name = field3 чтобы select вернул значение и оно было внесено в t2 ?

Что внести в t2? ID из t1? Так у вас этот параметр вроде-бы в :field1.
В общем непонятно.  Жаль
Записан

С уважением, Oldy.
Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 03-05-2004 12:40 » 

По моему я все-таки понял о чем вопрос.
Код:

create procedure ins_t2 )field1 float, field2 int, field3 varchar:
as
DECLARE VARIABLE ANY_ID INTEGER;
begin
select id from t1 into {ANY_ID where t1.name = {field3
insert into t2 values )gen_id)t2_id_gen,1:, {ANY_ID, {field1, {field2:
End

Кажется так.
Записан

С уважением, Oldy.
cvaleriy
Гость
« Ответ #3 : 29-05-2004 08:49 » 

Я счас слона рожу.....
Итак интербаз 6.0 диалект 3
Где ошибка ?
Код:

create procedure .......
......
AS
 DECLARE VARIABLE region_id INTEGER;
begin
  select "id" from "region" into {region_id where "region".name = {region_name;
  /* Procedure Text */
  insert into "forest" values )gen_id)"forest_gen",1:,
.....
suspend;
end


Ругается на строку select - типа символ ";" неизвестен....
Записан
Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 29-05-2004 09:19 » 

Уточните как вы выполняете скрипт создания процедуры, т.е. если выполняете через isql.exe, то там еще должна быть команда SET TERM... в начале и в конце.
Записан

С уважением, Oldy.
cvaleriy
Гость
« Ответ #5 : 29-05-2004 09:51 » 

Выполняю просто - пишу процедуру, пытаюсь ее скомпилить - а он в ответ такое.....Процедура уже была, только немного другого вида...
как-то раз запустил - нормально работала, - потом затер новую версию базы, только в синтаксисе не уверен, а счас вроде все правильно пишу - а он ... противный....
Записан
cvaleriy
Гость
« Ответ #6 : 29-05-2004 09:54 » 

Вообще использую IBExpert. Делаю в нем все.
Записан
cvaleriy
Гость
« Ответ #7 : 29-05-2004 09:57 » 

К примеру
Код:

....
select "id" from "region" into {region_id;
....
воспринимает нормально, начинаю писать where - начинается...
Записан
cvaleriy
Гость
« Ответ #8 : 29-05-2004 10:07 » 

ААААААААААААА !!!!!
SQL reference:
Цитата

Syntax   SELECT [TRANSACTION transaction]
   [DISTINCT | ALL]
   {* | <val> [, <val> …]}
   [INTO :var [, :var …]]
   FROM <tableref> [, <tableref> …]
   [WHERE <search_condition>]
   [GROUP BY col [COLLATE collation] [, col [COLLATE collation] …]

оказывается into конструкция идем в последнюю очередь.....
правильный вариант:
Код:

select distinct "id" from "region" where "region"."name" = {region_name into {region_id ;
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines