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

Вниз

Помогите составить запрос   Найти похожие ветки 

 
Василич   (2002-07-04 17:32) [0]

Добрый день ! Я не самый великий знаток SQL, но вот пришлось написать небольшую программу, и я попал в тупик с одним запросом. Значит, есть куча таблиц-справочников, большинство из них состоит из двух полей - ID и названия предмета. Одна таблица сводная, выглядит примерно так:

ID | Name | ID1 | ID2 | ID3 | ID4 | ID5 | ID6
------------------------------------------
| | | | | | |

где ID1..ID6 - соответственно ID из других таблиц. Надо в эту вводную таблицу ввести запись, причем пользователем, естественно, вводятся не IDs, а названия предметов из таблиц-справочников. В программе используется ADODataset. Понимаю, задача тривиальная, прошу не бить за тупость, помогите, плиз ! Заранее благодарю.


 
Johnmen ©   (2002-07-04 17:39) [1]

SELECT ... FROM Table1, Table2, ...
WHERE (Table1.ID1=Table2.ID2) and (Table1.ID1=Table3.ID3) and ...


 
Василич   (2002-07-04 17:43) [2]

>>Johnmen
Я разобрался, как производить выборку (на самом деле не совсем так, как ты написал, но неважно). Мне надо ВВЕСТИ запись.

В датасете есть параметры типа :ID1, :ID2. Как составить запрос таким образом, чтобы, допустим, название предмета вводилось пользователем в ComboBox, затем по этому значению находился ID этого названия в справочнике, и оно вводилось в сводную таблицу?


 
Johnmen ©   (2002-07-04 17:49) [3]

О, это надо ручками, предварительно продумав алгоритм...


 
Василич   (2002-07-04 18:08) [4]

Странно, мне казалось, если львиная доля баз данных устроена таким образом, то присутствующим здесь программерам не составит труда подсказать, как именно составить этот дурацкий запрос.
Еще небольшое дополнение: если пользователь не вводит значение в какой-нибудь ComboBox, то в таблицу в соответствующее поле должен записаться NULL.


 
Johnmen ©   (2002-07-04 18:17) [5]

Весь смысл в том, что одним запросом не обойтись, раз изменяются данные в нескольких таблицах...


 
Viewer   (2002-07-04 18:28) [6]

procedure TfmGRMenu.m_UpDate;
begin
with quOne do
begin
Close;
SQL.Clear;
SQL.Add("UPDATE "+ pTbName);
SQL.Add("SET");
SQL.Add("DATER=:DATER,");
if pAppend then begin
SQL.Add("USER_ID=:USER_ID,");
SQL.Add("PAR_ID=:PAR_ID,");
ParamByName("USER_ID").AsInteger := frLook.pIDL; // нужный тебе id
ParamByName("PAR_ID").AsInteger := frDBTree.tv.GetId;
end;
SQL.Add("chkVisible=:chkV,");
SQL.Add("chkEnabled=:chkE,");
ParamByName("chkV").AsBoolean := chkVisible.Checked;
ParamByName("chkE").AsBoolean := chkEnabled.Checked;
ParamByName("DATER").AsDateTime := Date;
if pAppend then
begin
SQL.Add("UIDC=:UIDC,");
ParamByName("UIDC").AsInteger := User.Id;
end;
SQL.Add("UID=:UID");
ParamByName("UID").AsInteger := User.Id;
SQL.Add("WHERE ID=:ID");
ParamByName("ID").AsInteger := pId;
quExecSQL_(quOne);
end;
end;
end;


 
Delirium ©   (2002-07-04 18:37) [7]

> Василич

См. DBLookupComboBox


 
Blondin   (2002-07-05 11:32) [8]

Точно DBLookUpComboBox,
В FieldsEditore пропиши Lookup поля и делай через Edit\Append \Post



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

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

Наверх




Память: 0.48 MB
Время: 0.009 c
1-81350
nikoss
2002-07-13 13:02
2002.07.25
Использование переменной в другом модуле


1-81271
maxim2
2002-07-15 13:18
2002.07.25
Подскажите куда вставлять объявление меток


14-81425
Ocean
2002-06-24 15:47
2002.07.25
Доступ к Sybase Anywhere, кроме ODBC


14-81438
Awex
2002-06-27 12:15
2002.07.25
Задача...


1-81212
nwc_eminem
2002-07-11 19:18
2002.07.25
Копирование файла