Главная страница
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.033 c
15-1145660795
Commirce
2006-04-22 03:06
2006.05.21
Продажа программы "буржуям"


15-1146034567
Харченко
2006-04-26 10:56
2006.05.21
Задачи по взвешиванию монет


3-1143450402
solenko
2006-03-27 13:06
2006.05.21
Получение id только что вставленной записи


15-1145902376
Тимур
2006-04-24 22:12
2006.05.21
aнализaтор кода


3-1143804426
Almikus
2006-03-31 15:27
2006.05.21
Присвоение данных полям