Приведу пример как это будет происходить на Дельфи применительно к вашей задаче:
Допустим есть таблица в которой содержиться информацио о клиенте: ClientInfo(ID,PIN,FirstName,MiddleName,LastName,Ba lance) и таблица в которой записываются операции со счетами. OperationJournal(ClientID,Operation,OperationDate)
Мы хотим получить список всех операций клиента с PIN='0000001'
Код:
Q := TAdoQuery.Create(nil);
Q.Connection := AdoConnection1;
Q.SQL.Text := ‘select OperationJournal.* from ClientInfo inner join OperationJournal on OperationJournal.ClientID=ClientInfo.ID where ClientInfo.Pin = :Pin’ ;
Q.Parameters.ParamValues[‘Pin’] := ‘0000001’;
Q.Open;
Далее, хотим провести операцию снятия 1000 руб со счета клиента с PIN='0000001'.
Здесь уже одним запросом не сделать, т.к изменятся будут сразу две таблицы.
Сначала получим код клиента с PIN='0000001':
Код:
Q := TAdoQuery.Create(nil);
Q.Connection := AdoConnection1;
Q.SQL.Text := ‘Select ID from ClientInfo where PIN=:Pin’ ;
Q.Parameters.ParamValues[‘Pin’] := ‘0000001’;
Q.Open;
ClientID := Q.FieldValues[‘ID’];
Затем внесем в журнал операций информацию о снятия со счета 1000 рублей:
Код:
Q.SQL.Text := ’Insert into OperationJournal (ClientID,Operation,OperationDate) Values(:ID,:Operation,:Date);
Q.Parameters.ParamValues[‘ID’] := ClientID;
Q.Parameters.ParamValues[‘Operation’] := 'Снятие со счета';
Q.Parameters.ParamValues[‘Date’] := Now;
Q.ExecSQL;
И наконец уменьшим сумму на счете клиента:
Код:
Q.SQL.Text := ’Update ClientInfo set Balance = Balance + :Value where ID=:ClientID’;
Q.Parameters.ParamValues[‘ID’] := ClientID;
Q.Parameters.ParamValues[‘Value’] := -1000;
Q.ExecSQL;