Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.05.21;
Скачать: CL | DM;

Вниз

Подскажите в чём ошибка   Найти похожие ветки 

 
wirg   (2006-05-02 09:59) [0]

У меня имеется таблица Произволителей с полями ИД_ПРОИЗВОДИТЕЛЯ, ИМЯ_ПРОИЗВОДИТЕЛЯ и таблица моделей устройств с полями ИД_ПРОИЗВОДИТЕЛЯ и ИМЯ_МОДЕЛИ. Мне нужно, чтобы в таблицу моделей вносился идентификатор из таблицы производителей для названия моделей, в которых имеется название из поля ИМЯ_ПРОИЗВОДИТЕЛЯ.

// Proizvoditel
adoconnection1.Execute("create table Proizvoditel (ID_proizv autoincrement primary key, Name_proizv varchar(40), Sait varchar(70))");
// Model
adoconnection1.Execute("create table Model(ID_model autoincrement primary key, Name_model varchar(100), ID_proizv integer, Infirmation_mod varchar(50))");

Запрос вот такой
UPDATE model SET id_proizv = (select Proizvoditel.id_proizv from Proizvoditel, MODEL where Model.Name_model like "%trim(Proizvoditel.Name_proizv)%" and rownum = 1 );
Просит внести rownum
Что не так?


 
Sergey13 ©   (2006-05-02 10:05) [1]

UPDATE model SET id_proizv = (select max(Proizvoditel.id_proizv) from Proizvoditel, MODEL where Model.Name_model like "%trim(Proizvoditel.Name_proizv)%" );
Но задача странная тем, что есть модели без производителя - такого, ИМХО, быть не должно.


 
Sergey13 ©   (2006-05-02 10:09) [2]

Кажется я не досмотрел запрос. В подзапросе таблицы MODEL не должно быть.

UPDATE model SET id_proizv = (select max(Proizvoditel.id_proizv) from Proizvoditel where Proizvoditel.ИМЯ_ПРОИЗВОДИТЕЛЯ like "%trim(Model.Name_model)%" );

Как то так, если я правильно понял задачу.


 
wirg   (2006-05-02 10:27) [3]

Запрос должен вставлять идентификатор производителя,
Model.Name_model =like %Proizvoditel.Name_proizv%. Если не реально такой запрос сделать, какие ещё варианты могут быть(запросы)?


 
Sergey13 ©   (2006-05-02 10:35) [4]

2[3] wirg   (02.05.06 10:27)
>какие ещё варианты могут быть(запросы)?
Самому (или оператора посадить на это) ручками вбивать - исправлять ошибки проектировщика.


 
sniknik ©   (2006-05-02 10:38) [5]

> Просит внести rownum
> Что не так?
поле в таблице с таким названием есть?

> какие ещё варианты могут быть(запросы)?
начинать изучать то что используеш, а не "брать нахрапом, авось пройдет".


 
wirg   (2006-05-02 10:44) [6]

А если в несколько запросов


 
Sergey13 ©   (2006-05-02 10:52) [7]

2 [6] wirg   (02.05.06 10:44)
Какого производителя ты поставишь для модели С650? И почему?


 
Wirg   (2006-05-02 11:02) [8]

записи заносятся в таблицу автоматически из текстовых конфигов компьютеров, в поле модели присутствует названия фирм производителей ИНтел и др, мне нужно занести в таблицу моделей идентификатор производителя. Число запросов значения не имеет главное, чтобы не руками, компов много.
Если можешь помоги или подскажи что-нибудь дельное?


 
Sergey13 ©   (2006-05-02 11:09) [9]

2[8] Wirg   (02.05.06 11:02)
Запрос из [2] Sergey13 ©   (02.05.06 10:09) - вполне можно принять за основу, если вместо "%trim(Model.Name_model)%" ты сможешь выделить часть названия, указывающую на производителя.


 
wirg   (2006-05-02 14:03) [10]

Какычку поставить не могу.

Процедура
procedure TForm1.Button2Click(Sender: TObject);
var
cat: OLEVariant;
proizv,id_proizv,id_model: string;
begin
//заносим производителей
qr1.SQL.Clear;
qr2.SQL.Clear;
//all proizv
qr2.SQL.Append("Select * from Proizvoditel");
qr2.Active:=true;
id_proizv:=inttostr(qr2.FieldValues["ID_proizv"]);
proizv:="*"+qr2.FieldValues["Name_proizv"]+"*";
qr2.First;
while not qr2.Eof do
begin
//????? как сдесь поставить кавычку чтобы работало
qr1.SQL.Append("Select ID_model From Model Where Name_model Like "+proizv+"");
qr1.Active:=true;

while not qr1.Eof do
begin
id_model:=inttostr(qr1.FieldValues["ID_model"]);
adoconnection1.Execute("Update Model Set Id_proizv ="+id_proizv+" Where ID_model="+id_model+"");

qr1.Next;
end;

qr2.Next;
end;
end;



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

Текущий архив: 2006.05.21;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.028 c
2-1146548105
dima_kds
2006-05-02 09:35
2006.05.21
Запятая


15-1145764548
Der Nechk@ssoff
2006-04-23 07:55
2006.05.21
CRC


15-1145617405
Некто
2006-04-21 15:03
2006.05.21
Админам страшно? =))


2-1146741214
KyRo
2006-05-04 15:13
2006.05.21
TServerSocket;


4-1141045353
Chaser
2006-02-27 16:02
2006.05.21
Сделать аналогично Пуск -> Выполнить