powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Выбрать записи, которых нет в таблице
13 сообщений из 13, страница 1 из 1
Выбрать записи, которых нет в таблице
    #38765624
Зелень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Объясните пожалуйста новичку, который только начал программировать. functions и allfunctions. Как выбрать из таблицы functions все записи, которых нету в allfunctions в третью таблицу? поля name и type в обеих таблицах есть и можно наверное использовть как связь
...
Рейтинг: 0 / 0
Выбрать записи, которых нет в таблице
    #38765647
Зеленьfunctions и allfunctions. Как выбрать из таблицы functions все записи, которых нету в allfunctions в третью таблицу? Как из пустоты выбрать что-то? Не пробовали обдумать свой вопрос? Или переформулировать? Например, так: как из allfunctions выбрать всё то, чего нет в functions?
...
Рейтинг: 0 / 0
Выбрать записи, которых нет в таблице
    #38765689
Rostislav D. Kudryashov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зелень, SELECT * FROM A WHERE Key NOT IN (SELECT Key FROM B)
...
Рейтинг: 0 / 0
Выбрать записи, которых нет в таблице
    #38765690
Зелень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А где я написал что таблица functions пустая? Она не пустая и может содержать записи, которых нет в allfunctions. Мне нужно найти такие записи в таблице functions, которых нету в allfunctions и занести эти записи в другую таблицу скажем testfunc. Как это сделать?
...
Рейтинг: 0 / 0
Выбрать записи, которых нет в таблице
    #38765698
Rostislav D. Kudryashov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зелень, недавно попалось объявление: требуется программист, хорошо владеющий русским языком.
А ещё сетования преподавателя математики, какой нынче студент пошёл: он всё понимает, но выразить не может.
Читайте классику, не смотрите киношку!
...
Рейтинг: 0 / 0
Выбрать записи, которых нет в таблице
    #38765718
Rostislav D. Kudryashov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зелень, если фильтр исключения записей должен состоять из двух полей, придётся их свернуть в одно значение, типа:
SELECT * FROM A WHERE STR (Key1,10)+STR(Key2,10) NOT IN (SELECT STR(Key1,10)+STR(Key2,10) FROM B)
...
Рейтинг: 0 / 0
Выбрать записи, которых нет в таблице
    #38765751
Rostislav D. Kudryashov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зелень, или, если покажется удобнее,
SELECT * FROM A WHERE Key1 NOT IN (SELECT Key1 FROM B) AND Key2 NOT IN (SELECT Key2 FROM B)
...
Рейтинг: 0 / 0
Выбрать записи, которых нет в таблице
    #38765779
Rostislav D. Kudryashov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rostislav D. Kudryashov, а ведь это не годится. Если и в таблице A, и в таблице B значения Key1, Key2 могут быть 0 и 1, то пропуская (фильтруя) в выборку записи с Key1 и Key2 , каких нет в таблице B, мы получим пустую выборку. А ведь цель фильтра выбрать из A записи с такими комбинациями Key1, Key2, которых нет в B. Например, в таблице A есть комбинации 0,0, а в таблице B - нет.
...
Рейтинг: 0 / 0
Выбрать записи, которых нет в таблице
    #38765799
Зелень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
давайте я вам заново скажу что есть в таблицах. есть первая таблица где очень много записей она каждый месяц обновляется. есть вторая таблица нужная для моей программы. в обеих таблицах есть поля name и type, по которым их можно связать. теперь мне нужно из первой таблицы выбрать такие записи по полям name и type, которых нет во второй таблице и занести их во вторую таблицу. вроде простым языком как мог объяснил что мне нужно. как мне это сделать?
...
Рейтинг: 0 / 0
Выбрать записи, которых нет в таблице
    #38765826
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зеленьдавайте я вам заново скажу что есть в таблицах. есть первая таблица где очень много записей она каждый месяц обновляется. есть вторая таблица нужная для моей программы. в обеих таблицах есть поля name и type, по которым их можно связать. теперь мне нужно из первой таблицы выбрать такие записи по полям name и type, которых нет во второй таблице и занести их во вторую таблицу. вроде простым языком как мог объяснил что мне нужно. как мне это сделать?В таких случаях надо не только простым языком рассказывать, но и на примере данных показывать. Иначе идет обсуждение сферического коня, а не конкретной проблемы.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
CREATE CURSOR t1 (_name c(10), _type c(1))
INSERT INTO t1 VALUES ('qwert', 'z')
INSERT INTO t1 VALUES ('qwert', 'z')
INSERT INTO t1 VALUES ('asdfg', 'z')
INSERT INTO t1 VALUES ('zxcvbn', 'z')
INSERT INTO t1 VALUES ('zxcvbn', 'z')
INSERT INTO t1 VALUES ('qwert', 's')
INSERT INTO t1 VALUES ('asdfg', 's')
INSERT INTO t1 VALUES ('zxcvbn', 'd')
CREATE CURSOR t2 (_name c(10), _type c(1))
INSERT INTO t2 VALUES ('qwert', 'z')
INSERT INTO t2 VALUES ('asdfg', 'z')
INSERT INTO t2 VALUES ('zxcvbn', 'z')
INSERT INTO t2 VALUES ('qwert', 's')
select * from t1 left join t2 on t1._name = t2._name and t1._type = t2._type WHERE t2._name is null
...
Рейтинг: 0 / 0
Выбрать записи, которых нет в таблице
    #38765952
Rostislav D. Kudryashov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Sizov,Sergey Sizovselect * from t1 left join t2 on t1._name = t2._name and t1._type = t2._type WHERE t2._name is null
это гораздо лучше моего сворачивания через STR(). Правильно ли я понял, что
1) если условие связи t1 и t2 для какой-то записи t1 не выполняется хоть по одному из двух полей, то в соединении (JOIN) для этой записи t1 все поля из t2 будут представлены значениями null ??? Так что проверки на null обоих полей связи не требуется? И
2) может, ближе к постановке задачи будет SELECT t1.* ???
...
Рейтинг: 0 / 0
Выбрать записи, которых нет в таблице
    #38765977
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rostislav D. KudryashovSergey Sizov,Sergey Sizovselect * from t1 left join t2 on t1._name = t2._name and t1._type = t2._type WHERE t2._name is null
это гораздо лучше моего сворачивания через STR(). Правильно ли я понял, что
1) если условие связи t1 и t2 для какой-то записи t1 не выполняется хоть по одному из двух полей, то в соединении (JOIN) для этой записи t1 все поля из t2 будут представлены значениями null ???А что, Вы можете предложить какие-то еще варианты? Так что проверки на null обоих полей связи не требуется?После слова ON пишется логическое выражение. ОДНО! И оно действует на запись, а не на отдельные поля. И
2) может, ближе к постановке задачи будет SELECT t1.* ???Что тут ближе к постановке задачи лучше знает топикстартер, а я всего лишь пытаюсь отгадать, что ему надо.
...
Рейтинг: 0 / 0
Выбрать записи, которых нет в таблице
    #38766003
Rostislav D. Kudryashov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Sizov, спасибо. И отдельное спасибо за снисходительность к моей лени.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Выбрать записи, которых нет в таблице
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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