powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Помогите с запросом
6 сообщений из 6, страница 1 из 1
Помогите с запросом
    #32059471
Рома
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
У меня не работает следующий запрос.
select amt.*,vaz.* from amt,vaz
where amt.mark=vaz.model and amt.n_dvig=vaz.dvigat

Обе базы DBF. Необходимо при помощи этого запроса сделать сверку транспортных средств типа ВАЗ из базы зарегистрированного транспорта с базой завода изготовителя ВАЗ. Логика такой, выбираем из этих баз все ТС типа ВАЗ и сравниваем номера двигателей и если нет совпадений выводим в дбгрид.
У меня при выполнении запроса машина виснет.Для информации в первой базе 300 тыс., а во второй-5,6 млн. записей.
Спасибо.
...
Рейтинг: 0 / 0
Помогите с запросом
    #32059512
Фотография Luchkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня что-то не согласуется:
"...where amt.mark=vaz.model and amt.n_dvig=vaz.dvigat..."
и
"...если нет совпадений выводим..."
растолкуйте плз по-подробнее.
...
Рейтинг: 0 / 0
Помогите с запросом
    #32059544
Рома
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здесь в коде ошибка
должно быть
amt.n_dvig<>vaz.dvigat
Т.е. перебираю из базы зарегистрированного транспорта все ВАЗы у которых № двигателей не совпадают с заводскими номерами из базы завода ВАЗ.
Спасибо.
...
Рейтинг: 0 / 0
Помогите с запросом
    #32059595
Фотография Luchkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это "спасибо" означает, что я помог и проблема решена?
Ух ты!!!! :-)
...
Рейтинг: 0 / 0
Помогите с запросом
    #32059766
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думаю, что не решена. Этот запрос вынесет огромное количество записей, если точнее, то произведение кол-ва зарегистрированных машин на кол-во машин завода с несовпадающими номерами двигателей.

Точнее нужно наверное так:

select amt.* from amt,vaz
where not exists(select 1 from vaz where amt.mark=vaz.model and amt.n_dvig=vaz.dvigat )

Хотя, смотря что Вам нужно на выходе
...
Рейтинг: 0 / 0
Помогите с запросом
    #32061459
vladgorobin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет!

У тебя ошибка:
select amt.*,vaz.* from amt,vaz -- здесь фактически получается умножение одной БД на другую, естественно машина повиснет
where amt.mark=v
az.model and amt.n_dvig=vaz.dvigat


Попробуй сделать примерно так:

select * from
amt A inner join vaz V on A.mark=V.model --связка двух БД по полю модели
where A.n_dvig<>V.dvigat --отобрать то, что нужно
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Помогите с запросом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]