Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Выбрать записи, которых нет в таблице / 13 сообщений из 13, страница 1 из 1
03.10.2014, 09:42
    #38765624
Зелень
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбрать записи, которых нет в таблице
Объясните пожалуйста новичку, который только начал программировать. functions и allfunctions. Как выбрать из таблицы functions все записи, которых нету в allfunctions в третью таблицу? поля name и type в обеих таблицах есть и можно наверное использовть как связь
...
Рейтинг: 0 / 0
03.10.2014, 10:03
    #38765647
Выбрать записи, которых нет в таблице
Зеленьfunctions и allfunctions. Как выбрать из таблицы functions все записи, которых нету в allfunctions в третью таблицу? Как из пустоты выбрать что-то? Не пробовали обдумать свой вопрос? Или переформулировать? Например, так: как из allfunctions выбрать всё то, чего нет в functions?
...
Рейтинг: 0 / 0
03.10.2014, 10:36
    #38765689
Rostislav D. Kudryashov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбрать записи, которых нет в таблице
Зелень, SELECT * FROM A WHERE Key NOT IN (SELECT Key FROM B)
...
Рейтинг: 0 / 0
03.10.2014, 10:37
    #38765690
Зелень
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбрать записи, которых нет в таблице
А где я написал что таблица functions пустая? Она не пустая и может содержать записи, которых нет в allfunctions. Мне нужно найти такие записи в таблице functions, которых нету в allfunctions и занести эти записи в другую таблицу скажем testfunc. Как это сделать?
...
Рейтинг: 0 / 0
03.10.2014, 10:41
    #38765698
Rostislav D. Kudryashov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбрать записи, которых нет в таблице
Зелень, недавно попалось объявление: требуется программист, хорошо владеющий русским языком.
А ещё сетования преподавателя математики, какой нынче студент пошёл: он всё понимает, но выразить не может.
Читайте классику, не смотрите киношку!
...
Рейтинг: 0 / 0
03.10.2014, 10:53
    #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
03.10.2014, 11:10
    #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
03.10.2014, 11:27
    #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
03.10.2014, 11:39
    #38765799
Зелень
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбрать записи, которых нет в таблице
давайте я вам заново скажу что есть в таблицах. есть первая таблица где очень много записей она каждый месяц обновляется. есть вторая таблица нужная для моей программы. в обеих таблицах есть поля name и type, по которым их можно связать. теперь мне нужно из первой таблицы выбрать такие записи по полям name и type, которых нет во второй таблице и занести их во вторую таблицу. вроде простым языком как мог объяснил что мне нужно. как мне это сделать?
...
Рейтинг: 0 / 0
03.10.2014, 11:50
    #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
03.10.2014, 12:40
    #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
03.10.2014, 12:52
    #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
03.10.2014, 13:10
    #38766003
Rostislav D. Kudryashov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбрать записи, которых нет в таблице
Sergey Sizov, спасибо. И отдельное спасибо за снисходительность к моей лени.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Выбрать записи, которых нет в таблице / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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