Имя: Пароль:
1C
1C 7.7
v7: соединить в запросе две таблицы
0 yanejsh
 
21.06.12
09:51
Есть две таблицы.
таб1
Товар1 перемещение1
Товар1 перемещение2
Товар2 перемещение3

таб2
Товар1 реализация1
Товар2 реализация2

Нужно получить объединение таблиц, но так, что если товар есть во второй таблице, то он не нужен. То есть нужен только тот товар, которого нет во второй таблице.
Подскажите, плиз, как это сделать?
1 Ёпрст
 
21.06.12
09:53
select товар from таб1
inner join таб2 on товар <> таб2.товар
2 expertus
 
21.06.12
10:04
Эммм...
Объединение таблиц, но при этом вторая таблица должна быть выброшена?
3 yanejsh
 
21.06.12
10:06
почему inner? может left все-таки?
сказал как мог :(
4 Ёпрст
 
21.06.12
10:09
да какая разница ?
да хоть так:
select товар from таб1
where товар not in (select товар from  таб2)
5 Ёпрст
 
21.06.12
10:10
(3) left оставит все строки первой таблички
6 yanejsh
 
21.06.12
10:12
так если товар есть в первой таблице и нет по второй - то он нужен
7 Ёпрст
 
21.06.12
10:13
можно и так еще
select товар from таб1
except
select товар from таб2
8 Дык ё
 
21.06.12
10:14
(5) а inner задублирует товары при нескольких несовпадениях. надо бы в (1) distinct добавить
9 expertus
 
21.06.12
10:15
Все, понял.
Я бы сделал так: сначала в таблице значений отсортировал и получил перечень нужных товары. Потом заново сделал запрос, и в фильтре указал нужные товары.
10 yanejsh
 
21.06.12
10:17
(9) и как бы ты получил в ТЗ нужные товары?
11 expertus
 
21.06.12
10:27
(10) выгрузил единую таблицу из запроса, в цикле перебрал строки и удалил ненужные.
12 yanejsh
 
21.06.12
10:34
(11) так очень неудобно. я уже пробовал... у тебя допустим 5 строк с товаром, два перемещения и одна реализация. когда увидишь реализацию, то значит надо удалять две предыдущие строки и текущую.
13 expertus
 
21.06.12
10:41
Тогда сверни тз так, чтобы у тебя на каждый товар была одна строка.
14 yanejsh
 
21.06.12
10:43
except меня вполне устроил