powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Сравнение в цикле...
8 сообщений из 8, страница 1 из 1
Сравнение в цикле...
    #35941209
Alex_Wong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Научите плиз, как имея две таблицы Table1 и Table2 с данными,
получить Table3 c их непересекающимися по полю f2 данными.
т.е. например, Table1 имеет два поля f1 и f2.
f1 I f2
--------------
text1 I 123
text2 I 124
text3 I 125
text4 I 125
text5 I 126
text6 I 127
text7 I 128

Table2 имеет одно поле f2.
f2
-------------
123
125
126
127
128
128
129
130

Хочу получить Table3 с двумя полями f1 и f2, чтобы она выглядела так :
f1 I f2
--------------
text2 I 124
text4 I 125
I 128
I 129
I 130

Опыта не имею, спасибо.
...
Рейтинг: 0 / 0
Сравнение в цикле...
    #35942735
slope
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
можно так, если нормальная база
create table3 as
select * from table1 where f2 in (
select f2 from table1
minus
select f2 from table2)
union
select * from table2 where f2 in (
select f2 from table2
minus
select f2 from table1)
только вот что то у вас повторяющиеся данные в table3 если я правильно понял суть задачи.
...
Рейтинг: 0 / 0
Сравнение в цикле...
    #35943018
Alex_Wong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В access 2007 вариант с "Minus" в проге что-то не пляшет...
Слышал, что в Oracle... не берусь... не спец.

Действительно, в примере поле f2 таблицы table1 и table2 содержит разные
и повторяющиеся строки... В этом и сложность...
В общем, пример с нужной table3 - и отражает потребность.
Т.е. если в первой два раза встречается 125, а во второй один,
то в третью результирующую table3 должна попасть "не перекрытая"
одна запись 125, и если во второй есть два раза 128 и по одному 129
и 130 то в table3 попадет один не перекр. 128 и соответстенно 129 и 130...

Через select и union не получается...
Перебор циклом тоже опыта нет...
буду оччень благодарен за решение примера,
спасибо.
...
Рейтинг: 0 / 0
Сравнение в цикле...
    #35943042
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_WongВ access 2007 вариант с "Minus" в проге что-то не пляшет...
Слышал, что в Oracle... не берусь... не спец.Вопросы по Акцессу надо задавать на Акцессовском форуме.
С точки зрения стандартного sql должно сработать такое:
Код: plaintext
1.
2.
select f1, f2 from table1 where f2 not in (select distinct f2 from table2)
union
select null, f2 from table2 where f2 not in (select distinct f2 from table1)
...
Рейтинг: 0 / 0
Сравнение в цикле...
    #35943060
Alex_Wong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
по такой схеме получил table3 :

f1 f2
-------------
text2 124
129
130

Здесь не попали 125 и 128...
должно быть :

f1 f2
-------------
text2 124
text4 125
<нет> 128
<нет> 129
<нет> 130

спасибо.
...
Рейтинг: 0 / 0
Сравнение в цикле...
    #35943079
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Wongдолжно быть :

f1 f2
-------------
text2 124
text4 125
<нет> 128
<нет> 129
<нет> 130Почему это вдруг "должно быть"? Вовсе не должно. В table2 есть поле f2 со значение 125, значит строки text4, 125 в итоге быть не должно. В первой таблице есть строка text7, 128, значит и в итоге строки с 128 быть не должно.
Смотри на свои данные внимательнее.
...
Рейтинг: 0 / 0
Сравнение в цикле...
    #35943124
Alex_Wong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl, спасибо за ваше участие...

выше я пояснил почему, т.к. например в table1 есть строка text3 I 125
и есть строка text4 I 125 т.е. 125 в ней встречается два раза,
а в table2 125 присутствует один раз...

и должно произойти взаимоудаление равного кол-ва строк,
причем мне без разницы какая из двух :
с text3 или с text4 попадет в table3.

Вот например, если бы в table2 не было f2=125,
то в table3 должны попасть обе строки:
..... I .....
text3 I 125
text4 I 125
..... I .....

Данный пример, имеет конкретное значение
для работы с моими данными, и максимум к чему я пришел -
это ввести дополнительное поле для table1 и table2 с подсчетом кол-ва строк:
Так для table1 будет
f2______ count
123_____1
124_____1
125_____2
126_____1
127_____1
128_____1

Для table2 будет
f2______count
123_____1
125_____1
126_____1
127_____1
128_____2
129_____1
130_____1

Ну а нужная результирующая table3 должна получится как разность 'каунтов'
если равна нулю то строка не попадает в table3, иначе попадает...
но до рабочего кода навыков не хватает.
Пробовал перебор в цикле... также...
...
Рейтинг: 0 / 0
Сравнение в цикле...
    #35943330
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для MS SQL
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
select
  max(t1.f1) f1,
  isnull(t2.f2, t1.f2) f2
from
  #t2 t2
full join #t1 t1 on t1.f2 = t2.f2
group by
  isnull(t2.f2, t1.f2)
having
  count(t1.f2) + count(t2.f2)  <>  2 
I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Сравнение в цикле...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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