Имя: Пароль:
1C
1С v8
Запрос (найти одинаковые пары)
0 serega2671
 
11.12.15
01:05
Доброго.

К примеру: есть таблица. условие А и Б = Б и А

А и Б Значение 1
Б и А Значение 1
Г и Д Значение 1
А и Л Значение 1
Д И Г Значение 1

на выходе нужно получить
А и Б Значение 2
Г и Д Значение 2
1 ИсчадиеADO
 
11.12.15
01:09
количество(*)

не уж то сам не напишешь?
2 serega2671
 
11.12.15
01:18
в студию решение
3 GROOVY
 
11.12.15
03:09
В студию ПРИЗ!
4 GROOVY
 
11.12.15
03:10
Не напишет, он и сформулировать не может.
5 Лодырь
 
11.12.15
04:44
(4) 6 с лишним лет опыта. Может и осилить.
6 cw014
 
11.12.15
07:29
Допустим, А - поле1, Б - поле2
7 cw014
 
11.12.15
07:30
Тогда:
ВЫБОР КОГДА (поле1 = поле1 И поле2 = поле2) ИЛИ (поле1 = поле2 И поле2 = полей) ТОГДА 1 ИНАЧЕ 0 КОНЕЦ
8 dk
 
11.12.15
07:57
Добавь ключевое поле типа
CASE WHEN A>Б THEN A+Б ELSE Б+А END KEY
и группируй по ключу
9 dk
 
11.12.15
07:59
ну и условие на HAVING COUNT(*) > 1
10 User_Agronom
 
11.12.15
08:28
(5) Длина полоски под ником не всегда равна длине всем известного органа!

Читая стартовый топик я не понял сколько столбцов в первоначальной таблице. Три? а почему между первым и вторым есть союз "и", а между вторым и третьим нет. И что такое "значение"? Тоже столбец?

Тема - находка для Евгения Ваганыча!
11 cw014
 
11.12.15
08:29
(8) В таком формате CASE не нужен
12 Лодырь
 
11.12.15
08:34
(8) Операция сложения может быть не определена на множестве. как и отношения < и >
13 Vladal
 
11.12.15
08:35
(0) Нарисуй сюда таблицу, хотя бы 5 строк, которые ты описал.
14 dk
 
11.12.15
08:40
(7) чо то ты не то покурил )
(12) я ведь не телепат чтобы угадывать какие там данные
15 serega2671
 
11.12.15
08:46
А Б 1
Б А 1
Г Д 1
А Л 1
Д Г 1

считать что А Б = Б А
сгруппировать - получить

А Б 2
Г Д 2
16 Лодырь
 
11.12.15
08:47
(15) Порядок на множестве задан?
17 Лодырь
 
11.12.15
08:49
(15) Спрошу проще, почему ты решил что верный ответ
А Б 2
Г Д 2
а не
Б А 2
Д Г 2
18 13_Mult
 
11.12.15
09:05
если для прикола )

ВЫБРАТЬ "А и Б" КАК Поле1, 1 КАК Поле2
ПОМЕСТИТЬ ВТ
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Б и А",    1
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Г и Д", 1
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "А и Л",    1
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Д и Г", 1
;
////////////////////////////////////////////////////////////
ВЫБРАТЬ ВЫБОР КОГДА ВТ.Поле1 = "Б и А" ТОГДА "А и Б"
    ИНАЧЕ ВЫБОР КОГДА ВТ.Поле1 = "Д и Г" ТОГДА "Г и Д"
    ИНАЧЕ ВТ.Поле1 КОНЕЦ
    КОНЕЦ КАК Поле3,
    СУММА(ВТ.Поле2) КАК Поле2
ИЗ     ВТ КАК ВТ
СГРУППИРОВАТЬ ПО
    ВЫБОР КОГДА ВТ.Поле1 = "Б и А" ТОГДА "А и Б"
    ИНАЧЕ ВЫБОР КОГДА ВТ.Поле1 = "Д и Г" ТОГДА "Г и Д"
    ИНАЧЕ ВТ.Поле1 КОНЕЦ КОНЕЦ
19 Лефмихалыч
 
11.12.15
09:07
(0) как и откуда должно образоваться "значение 2"?
20 Лефмихалыч
 
11.12.15
09:08
и куда делись А и Л?..
21 serega2671
 
11.12.15
09:17
брррр

Оставим только

А Б 1
Б А 1

Считается что А Б = Б А.
Нужно вывести А Б 2
как если бы было
А Б 1
А Б 1
-----
А Б 2
22 Лодырь
 
11.12.15
09:22
задам последний раз вопрос.

Операция сравнения определена на множестве значений А и Б?
Если нет, то как вы понимаете, что выводить надо А Б 2 а не Б А 2
23 Repey
 
11.12.15
09:23
выбрать Поле11, Поле 12, Количество(Поле11) как колич
ИЗ (Выбрать Поле01 КАК Поле11, Поле02 КАК Поле 12 Из вхТаб
Объединить ВСЕ
Выбрать Поле02, Поле01 Из вхТаб) КАК Таб2

Вот так пойдет?
24 Repey
 
11.12.15
09:27
(23) А!!
выбрать Поле11, Поле 12, Количество(Поле11) как колич
ИЗ (Выбрать Поле01 КАК Поле11, Поле02 КАК Поле 12 Из вхТаб
Объединить ВСЕ
Выбрать Поле02, Поле01 Из вхТаб) КАК Таб2
сгруппировать по Поле11, Поле 12
25 Repey
 
11.12.15
09:42
.. Или вот еще вариант

выбрать Поле11, Поле 12, Количество(Поле11) как колич
ИЗ (Выбрать
выбор когда Поле01 > Поле02 Тогда Поле02
Иначе Поле01 конец КАК Поле11
, выбор когда Поле01 > Поле02 тогда Поле01
иначе Поле02 конец КАК Поле 12 Из вхТаб
) КАК Таб2
сгруппировать по Поле11, Поле 12
26 dk
 
11.12.15
09:42

ВЫБРАТЬ Поле1, Поле2, 1 Поле3
ПОМЕСТИТЬ ВТ
ИЗ
(ВЫБРАТЬ "Б" Поле1, "А" Поле2
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Г", "Д"
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "А", "Б"
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "А", "Л"
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Д", "Г"
) Влож
;
ВЫБРАТЬ
    //Поле1,
    //Поле2,
    ВЫБОР КОГДА Поле1 < Поле2
            ТОГДА Поле1 + Поле2
            ИНАЧЕ Поле2 + Поле1
    Конец ПолеКлюч
    , СУММА(Поле3) Сумма
ИЗ
    ВТ КАК Спр
СГРУППИРОВАТЬ ПО
    ВЫБОР КОГДА Поле1 < Поле2
            ТОГДА Поле1 + Поле2
            ИНАЧЕ Поле2 + Поле1
    Конец
ИМЕЮЩИЕ
    СУММА(Поле3) = 2
27 Ildarovich
 
11.12.15
10:36
Как я понял задачу: требуется посчитать число одинаковых записей, если одинаковость допускает перестановку реквизитов местами. Можно соединить таблицу саму с собой, определив, не встречается ли где записи с переставленными реквизитами. Но лучше (надежнее) сделать так:

ВЫБРАТЬ А, Б, КОЛИЧЕСТВО(*)
ИЗ (ВЫБРАТЬ А, Б ИЗ Дано ОБЪЕДИНИТЬ ВЫБРАТЬ Б, А ИЗ Дано ГДЕ А <> Б) КАК ВЗ
ГДЕ А <= Б
28 serega2671
 
11.12.15
10:44
(25)(27) СПС
29 serega2671
 
11.12.15
10:45
(26) тоже=)