Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

База данных и SQL

16K
05 октября 2006 года
babreonok
12 / / 29.09.2006
Помогите ктонить! Я делаю выборку из 3-х таблиц базы данных с помощью следующего кода:
Код:
"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;".
В этой базе бывает так, что одной записи в таблице owner может соответствовать несколько записей в таблицах maintable и motor. При выполнении этого кода я получаю 6 (шесть) экземпляров записи удовлетворяющей условию, 3 из которых не содержат ни какой информации в полях таблицы owner. Что делать, чтобы получать только 1 копию записей?

[COLOR=red]используй теги code для написания кода (moderator)[/COLOR]
337
05 октября 2006 года
shine
719 / / 09.06.2006
Можешь привести SQL к читаемому виду?
16K
05 октября 2006 года
babreonok
12 / / 29.09.2006
[QUOTE=shine]Можешь привести SQL к читаемому виду?[/QUOTE]
Вот чистый скюэль-запрос.
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.em ptyweight,maintable.DateUcheota,owner.sertnum,owner.family,owner.name,owner.Patro nymic,owner.Direction,owner.Town,owner.Street,owner.House,owner.Korpus, owner.Apartment,owner.PasportSeriya,owner.PasportNum,motor.MotorNum,motor.Model,motor.Power,motor.WorkWolum
FROM (maintable inner join owner on maintable.sertnum=owner.sertnum), (maintable inner join motor on maintable.motornum=motor.motornum)
WHERE (maintable.gosregznak='С544ВВ')
order by maintable.gosregznak
337
05 октября 2006 года
shine
719 / / 09.06.2006
Во-первых попробуй SELECT TOP 1 maintable.gos...
После этого у тебя останется только одна запись.

Для того чтобы отфильтровать записи с NULL в значениях поля field_name используй такой фильтр:
WHERE field_name IS NOT NULL
339
06 октября 2006 года
verybadbug
619 / / 12.09.2005
в секции FROM у тя фигня какаято написана.... если хочешь сделать связку 3 табл...


FROM ((maintable inner join owner on maintable.sertnum=owner.sertnum) inner join motor on maintable.motornum=motor.motornum)


примерно так...
если хочешь получить корректные запросы - строй их при помощи конструкторов запросов в твоей СУБД
16K
07 октября 2006 года
babreonok
12 / / 29.09.2006
Огромное спасибо "verybadbug". исправил секцию From и всё стало хорошо!!! Поблема решена.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог