Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.07.25;
Скачать: [xml.tar.bz2];

Вниз

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

 
Василич   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
3-81160
DmitryN
2002-07-04 08:09
2002.07.25
Delphi+MS SQL+SQLDMO


1-81362
SemFLY
2002-07-11 22:35
2002.07.25
Как открыть CD-ROM, но тока тот который Slave, а не Master ?


3-81137
ArhAngeL2
2002-07-02 11:39
2002.07.25
Индексирование в рантайме


1-81237
gluek
2002-07-14 15:59
2002.07.25
Еще вопросик по математике...


1-81295
kserg@ukr.net
2002-07-11 18:36
2002.07.25
StringGrid - как узнать прорисованы ли у StringGrid-a ScrollBar-ы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский