![]() |
|
Помогите с запросом | ☑ | ||
---|---|---|---|---|
0
shamannk
14.01.13
✎
18:13
|
Есть табличка соответствий вида:
Поле1 Поле2 1 2 2 1 3 4 5 6 4 3 6 5 Нужно оставить только 1 соответствие: 1 2 4 3 5 6 Не важно какое 1 к 2 или 2 к 1. |
|||
1
undertaker
14.01.13
✎
18:17
|
не понятен критерий, по которому так получилось....
|
|||
2
shamannk
14.01.13
✎
18:20
|
(1) Из таблички видно что в 1ой строе 1 соответствует 2 а во второй строке 2 соответствует 1 в результат должна попасть только одна их этих строк (любая).
|
|||
3
palpetrovich
14.01.13
✎
18:22
|
"выбор" надо юзать наверне
|
|||
4
Fragster
гуру
14.01.13
✎
18:22
|
Выбрать т1.п1, т1.п2 Из
левое соединение по т1.п2 = т2.п1 и т1.п2 = т2.п1 и Т2.П1 >Т2.П2 Где Т2.П1 Есть NULL |
|||
5
palpetrovich
14.01.13
✎
18:25
|
(4) мне показалось нужно нечто типа
ВЫБОР КОГДА а=в+1 Тогда Истина ВЫБОР КОГДА в=ф+1 Тогда Истина Иначе Ложь КОНЕЦ как УсловиеОтбора |
|||
6
palpetrovich
14.01.13
✎
18:25
|
* в=ф+1 == в=а+1 :)
|
|||
7
shamannk
14.01.13
✎
18:26
|
(5) Там не числа просто для примера написал.
|
|||
8
Reset
14.01.13
✎
18:27
|
Вроде похожая задача
v8: Запрос на подумать |
|||
9
palpetrovich
14.01.13
✎
18:28
|
(7) ну, я для примера и подумал ...наверное будет нелишним настоящий критерий отбора озвучить :)
|
|||
10
Fragster
гуру
14.01.13
✎
18:28
|
это походу тестовое задание у кого-то
|
|||
11
shamannk
14.01.13
✎
18:28
|
(8) Да, только без 1 к 1
|
|||
12
Reset
14.01.13
✎
18:29
|
(11) ну заменить >= на >
|
|||
13
shamannk
14.01.13
✎
18:29
|
(9) Он и не работает что будет если связь 4 к 6 или 5 к 5
|
|||
14
Fragster
гуру
14.01.13
✎
18:31
|
ВЫБРАТЬ
"1" КАК Пункт1, "1" КАК Пункт2 ПОМЕСТИТЬ втСвязи ОБЪЕДИНИТЬ ВЫБРАТЬ "1", "2" ОБЪЕДИНИТЬ ВЫБРАТЬ "2", "1" ОБЪЕДИНИТЬ ВЫБРАТЬ "2", "2" ОБЪЕДИНИТЬ ВЫБРАТЬ "2", "3" ОБЪЕДИНИТЬ ВЫБРАТЬ "1", "3" ОБЪЕДИНИТЬ ВЫБРАТЬ "3", "1" ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗЛИЧНЫЕ втСвязи1.Пункт1, втСвязи1.Пункт2 ИЗ втСвязи КАК втСвязи1 ЛЕВОЕ СОЕДИНЕНИЕ втСвязи КАК втСвязи2 ПО втСвязи1.Пункт1 = втСвязи2.Пункт2 И втСвязи1.Пункт2 = втСвязи2.Пункт1 И (втСвязи2.Пункт1 < втСвязи2.Пункт2) Где втСвязи2.Пункт1 Есть NULL |
|||
15
Reset
14.01.13
✎
18:43
|
Вариант без соединения (не мое, из (8))
ВЫБРАТЬ РАЗЛИЧНЫЕ ВЫБОР КОГДА ВТ.П1 < ВТ.П2 ТОГДА ВТ.П1 ИНАЧЕ ВТ.П2 КОНЕЦ КАК П1, ВЫБОР КОГДА ВТ.П1 > ВТ.П2 ТОГДА ВТ.П1 ИНАЧЕ ВТ.П2 КОНЕЦ КАК П2 ПОМЕСТИТЬ ВключаяОдинаковые ИЗ ВТ КАК ВТ; ВЫБРАТЬ ВключаяОдинаковые.П1, ВключаяОдинаковые.П2 ИЗ ВключаяОдинаковые КАК ВключаяОдинаковые ГДЕ ВключаяОдинаковые.П1 <> ВключаяОдинаковые.П2 |
|||
16
Reset
14.01.13
✎
18:43
|
Идея (с) @Ненавижу 1С
|
|||
17
Reset
14.01.13
✎
18:46
|
ять, еще одна вт совсем лишняя.
Вот ВЫБРАТЬ РАЗЛИЧНЫЕ ВЫБОР КОГДА ВТ.П1 < ВТ.П2 ТОГДА ВТ.П1 ИНАЧЕ ВТ.П2 КОНЕЦ КАК П1, ВЫБОР КОГДА ВТ.П1 > ВТ.П2 ТОГДА ВТ.П1 ИНАЧЕ ВТ.П2 КОНЕЦ КАК П2 ИЗ ВТ КАК ВТ Где ВТ.П1 <> ВТ.П2 |
|||
18
palpetrovich
14.01.13
✎
19:16
|
(13) а (0) разница только а один
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |