Имя: Пароль:
1C
1С v8
Туплю с мини-запросом поможите !
0 Никола_
Питерский
 
27.06.12
17:21
Уважаемые под конец дня прям мозг не варит, да и не силен я в запросах.

Есть две таблицы:

таб1     таб2
1         3
3         1
6         9

Нужно получить:

таб3
6
9
или
9
6


Это возможно или я совсем тупой и ленивый ?
1 ThreeTONE
 
27.06.12
17:25
выбрать максимум из таб1
объединить
выбрать максимум из таб2

не?
2 Никола_
Питерский
 
27.06.12
17:26
(1) Нет числа могут быть разные и больше и меньше !
3 Ksandr
 
27.06.12
17:26
(2) по какому условию получить то?
4 Hostess_
of_Love
 
27.06.12
17:28
(3)те которые только либо в первой таблице либо во второй
5 Никола_
Питерский
 
27.06.12
17:28
(3) не равенство, значение первой таблицы не входит в значения второй и на оборот
6 Никола_
Питерский
 
27.06.12
17:29
Я так понимаю здесь нужно два левых или правых соединения с переменой мест и заворачивать это все в одну табличку ?
7 mikecool
 
27.06.12
17:30
полное соединение
условие соединения на не равенство
8 andrewks
 
27.06.12
17:30
(0) используй соединение
9 МихаилМ
 
27.06.12
17:31
SELECT таб1.somefield FROM таб1
LEFT JOIN таб2
ON таб1.somefield = таб2.somefield
WHERE таб2.somefield IS NULL


UNION

SELECT таб2.somefield FROM таб2
LEFT JOIN таб1
ON таб2.somefield = таб1.somefield
WHERE таб2.somefield IS NULL
10 ptiz
 
27.06.12
17:31
Выбрать
Значение
Из Таб2 ГДЕ НЕ Значение В (Выбрать Значение Из Таб1)
ОБЪЕДИНИТЬ ВСЕ
Выбрать
Значение
Из Таб1 ГДЕ НЕ Значение В (Выбрать Значение Из Таб2)
11 oleg_prg
 
27.06.12
17:31
Или так
Выбрать
    П1
ПОМЕСТИТЬ Т1
ИЗ
    (ВЫБРАТЬ 1 КАК П1 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 6) КАК А  
;

 Выбрать
    П2
ПОМЕСТИТЬ Т2
ИЗ
    (ВЫБРАТЬ 3 КАК П2 ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК А  
;    

ВЫБРАТЬ
Максимум(Т1.П1) КАК М1,
Максимум(Т2.П2) КАК М2
ИЗ
Т1, Т2
12 Никола_
Питерский
 
27.06.12
17:32
(7) Полное соединение по не равенству, дает мне и
3    1
1    3

и прочий шквал
13 andrewks
 
27.06.12
17:32
(9) мне кажется, можно обойтись одним джойном, полным. мне кажется, или нет?
14 Ненавижу 1С
 
гуру
27.06.12
17:32
выбрать а
из
(выбрать а, 1 как х из таб1
объединить все
выбрать а, 1 из таб2) как Т
сгруппировать по а
имеющие сумма(х)=1
15 Ненавижу 1С
 
гуру
27.06.12
17:33
(13) можно
16 andrewks
 
27.06.12
17:34
(14) может, имеющие количество(х)=1  ?
17 Никола_
Питерский
 
27.06.12
17:35
(13) (15) Не получается полным, хоть убейте см (12) !

Выбираю между (9) и (10) !
18 oleg_prg
 
27.06.12
17:35
или так, тогда в результате получим одну таблицу
Выбрать
    П1
ПОМЕСТИТЬ Т1
ИЗ
    (ВЫБРАТЬ 1 КАК П1 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 6) КАК А  
;

 Выбрать
    П2
ПОМЕСТИТЬ Т2
ИЗ
    (ВЫБРАТЬ 3 КАК П2 ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК А  
;    

ВЫБРАТЬ
Максимум(Т1.П1) КАК М1 ОБЪЕДИНИТЬ ВЫБРАТЬ
Максимум(Т2.П2) КАК М2
ИЗ
Т1, Т2
19 Ненавижу 1С
 
гуру
27.06.12
17:36
(16) какая х разница?
20 andrewks
 
27.06.12
17:38
(19) уже разглядел, что никакой :)
21 spu79
 
27.06.12
17:39
в (9) правильный ответ...
22 andrewks
 
27.06.12
17:41

select
1 as val
into tt1
union all select 3 union all select 6

;

select
3 as val
into tt2
union all select 1 union all select 9

;

select
isnull(tt1.val,tt2.val) as val
from
tt1
full join
tt2
on (tt1.val=tt2.val)
where ((tt1.val is null) or (tt2.val is null))
23 Buster007
 
27.06.12
17:43
(7) а как сделать полном соединением с условием на неравенство?
24 andrewks
 
27.06.12
17:43
(18) при чём здесь максимум?
25 mikecool
 
27.06.12
17:44
(23) без понятия ) не проверял
26 cViper
 
27.06.12
17:49
(22) В оракл есть INTERSECT
27 andrewks
 
27.06.12
17:52
(26) и?
28 cViper
 
27.06.12
17:54
(0)
таб1     таб2
1         3
3         1
6         9
ВЫБРАТЬ
  колонки.значение,
  СУММА(Число)
(ВЫБРАТЬ
  таб1.значение,
  1 КАК Число
ИЗ
   таб1
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
  таб2.значение,
  1 КАК Число
ИЗ
   таб2) КАК колонки
СГРУППИРОВАТЬ ПО
   колонки.значение
ИМЕЮЩИЕ
  СУММА(Число)=1
29 cViper
 
27.06.12
17:55
(27) Что и? Сам на sqlе писать начал. Я тебе пример привел.
30 cViper
 
27.06.12
17:56
(14) Не заметил )
31 andrewks
 
27.06.12
17:57
(29) во-первых, это запрос для 1С, во-вторых, INTERSECT даст тебе 1 3, а не 6 9
32 Ёпрст
 
27.06.12
18:01
(0)
select id from t1
exept
select id from t2
33 andrewks
 
27.06.12
18:02
а вот это уже SQL :)
34 cViper
 
27.06.12
21:48
(31) Туплю ) MINUS
Закон Брукера: Даже маленькая практика стоит большой теории.