• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Delphi и Sql

  • Автор темы babreonok
  • Дата начала
Статус
Закрыто для дальнейших ответов.
B

babreonok

Помогите ктонить! Я делаю выборку из 3-х таблиц базы данных с помощью следующего кода:
[sql]dtm.Query.SQL.Text:='SELECT maintable.gosregznak,maintable.markaauto,'+
'maintable.modelauto,maintable.identnum,maintable.type,maintable.kategory,'+
'maintable.godvupusk,maintable.shassi,maintable.kuzov,maintable.color,'+
'maintable.region,maintable.maxweight,maintable.emptyweight,'+
'maintable.DateUcheota,'+
'owner.sertnum,owner.family,owner.name,owner.Patronymic,owner.Direction,'+
'owner.Town,owner.Street,owner.House,owner.Korpus,owner.Apartment,'+
'owner.PasportSeriya,owner.PasportNum,motor.MotorNum,motor.Model,'+
'motor.Power,motor.WorkWolum';
dtm.Query.SQL.Add('FROM (maintable inner join owner on maintable.sertnum=owner.sertnum), (maintable inner join motor on maintable.motornum=motor.motornum)');
dtm.Query.SQL.Add('WHERE ('+asMainFilter+')');
dtm.Query.SQL.Add('order by maintable.gosregznak');
dtm.Query.Open;[/sql].В этой базе бывает так, что одной записи в таблице owner может соответствовать несколько записей в таблицах maintable и motor. При выполнении этого кода я получаю 6 (шесть) экземпляров записи удовлетворяющей условию, 3 из которых не содержат ни какой информации в полях таблицы owner. Что делать, чтобы получать только 1 копию записей?
 
B

Barmutik

Составить правильно SQL запрос .. судя по Вашим словам у Вас присутствует отношение один ко многим в таблицах owner с остальными ...

Вам надо объяснить Вашей БД какую брать запись из подчинённых таблиц .. если Вы конкретно хотите только одну то используйте агрегатные фукнции для получения первоначально курсора из подчинённых таблиц а уже потом джойньте его с основной таблицей ...
 
B

babreonok

Barmutik, а можешь посоветоввать хорошее пособие по скюэлю?
 
B

Barmutik

Мммм.. у меня когда-то первая книга была .. Сборник задач для языка SQL... там сначла давался материал а после уже по нему шли задачи ...

На текущий момент что-то более свежее врядли могу посоветовать.. возьмите любой справочник по ANSI SQL ...
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!