• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

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 ...
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

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