powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / И снова DELETE, хотя впрочем и не он
4 сообщений из 4, страница 1 из 1
И снова DELETE, хотя впрочем и не он
    #33773682
PyroTechnic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу тысяч извинений, я в Фоксе человек новенький, поэтому вопрос у меня глупенький:
Есть две взаимосвязанные таблицы. Связка по 4-м полям, из которых два - строковые, одно числовое и одно дата. Мне нужно из одной таблицы удалить те строчки, которых нет в другой. Будь это оракул, я бы написал:
DELETE...
WHERE NOT EXISTS (SELECT...)
Но в 8-м Фоксе я не нашел экзиста. Как быть? неужто придется складывать поля и сравнивать их суммы? (ну типа f1+dtoc(f2)+...)
...
Рейтинг: 0 / 0
И снова DELETE, хотя впрочем и не он
    #33773735
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Он есть. См. Help: SELECT - SQL Command (Example 6)
Код: plaintext
1.
2.
...
EXISTS ; 
(SELECT * FROM orders WHERE customer.postalcode =    orders.postalcode)
...
Рейтинг: 0 / 0
И снова DELETE, хотя впрочем и не он
    #33776343
PyroTechnic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Но с DELETE как-то не фурычит - syntax error пишет (может конструкция NOT EXISTS в Фоксе не существует?) В принципе, я свою мыслю по поводу суммы полей опробовал - работает, объемы данных мизерные (программа по убору "мусора" из таблиц перед погрузкой их в Оракул), так что на производительности сильно не сказывается (точнее не сказывается вааще:-))
...
Рейтинг: 0 / 0
И снова DELETE, хотя впрочем и не он
    #33779279
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi PyroTechnic!

В VFP8 всё замечательно работает

CREATE CURSOR c1 (n1 I, n2 C(10))
CREATE CURSOR c2 (n1 I, n2 C(10))
* наполняем чем угодно
DELETE FROM c1 WHERE NOT EXISTS (SELECT * FROM c2 WHERE c2.n1 = c1.n1 AND
c2.n2 = c1.n2)
* отмечает на удаление все "отличающиеся" записи

Так что ищи ошибку в другом месте.

Хотя возможно что для твоей задачи подойдёт и более простой вариант - не
удалять, а выбрать в новый курсор (можно и в таблицу) те записи которые
нужны - в данном случае "одинаковые" - т.е. WHERE EXISTS (...) или даже
просто результат INNER JOIN между этими 2-мя таблицами по всем 4
интересующим полям.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / И снова DELETE, хотя впрочем и не он
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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