|
Запрос на подумать | ☑ | ||
---|---|---|---|---|
0
Азазелло
18.09.12
✎
15:39
|
Есть таблица вида
"А" "А" "А" "Б" "Б" "А" "Б" "Б" На выходе запросом получить "А" "А" "А" "Б" "Б" "Б" , т.е. удалить дубли "аддитивных" строк Если кому нужно, предоставляю начальный набор данных: ВЫБРАТЬ "1" КАК Пункт1, "1" КАК Пункт2 ПОМЕСТИТЬ втСвязи ОБЪЕДИНИТЬ ВЫБРАТЬ "1", "2" ОБЪЕДИНИТЬ ВЫБРАТЬ "2", "1" ОБЪЕДИНИТЬ ВЫБРАТЬ "2", "2" ОБЪЕДИНИТЬ ВЫБРАТЬ "2", "3" ОБЪЕДИНИТЬ ВЫБРАТЬ "1", "3" ОБЪЕДИНИТЬ ВЫБРАТЬ "3", "1" |
|||
1
shuhard
18.09.12
✎
15:44
|
(0)[ т.е. удалить дубли "аддитивных" строк]
даже GROOVY не понял что это значит =) |
|||
2
Bober
18.09.12
✎
15:46
|
таблицы всегда из двух полей по одному символу?
|
|||
3
Classic
18.09.12
✎
15:47
|
(0)
Что тут думать. Писать надо. Нам сделать? |
|||
4
Bober
18.09.12
✎
15:48
|
(0) и какие могут быть символы (0-9 a-z)?
|
|||
5
Kreont
18.09.12
✎
15:48
|
Сортануть по строке, потом свернуть
|
|||
6
Азазелло
18.09.12
✎
15:49
|
(2) Строка для примера. Пусть будут Ссылки
(3) да нет, я уже сделал, просто задача показалась интересной (4) Ссылки |
|||
7
GROOVY
18.09.12
✎
15:49
|
Соединить с самой собой, по условию (Поле1 = Поле1 И Поле2 = Поле2) ИЛИ (Поле1 = Поле2 И Поле2 = Поле1) И выбрать те которые в результате соединения ЕСТЬ NULL
|
|||
8
Азазелло
18.09.12
✎
15:50
|
(7) нет
|
|||
9
aleks-id
18.09.12
✎
16:06
|
че тут думать
выбрать поле1, поле2 объединить выбрать поле2, поле1 потом свернуть |
|||
10
aleks-id
18.09.12
✎
16:07
|
(9) наполовину только
ща допишу |
|||
11
МихаилМ
18.09.12
✎
16:08
|
в (9) правильно в (7) -неправильно
|
|||
12
Азазелло
18.09.12
✎
16:10
|
(10) ну и что получится на выходе? :)
|
|||
13
Ёпрст
18.09.12
✎
16:10
|
(12) каша вестимо
|
|||
14
ssh2006
18.09.12
✎
16:10
|
(9) +1
|
|||
15
Ёпрст
18.09.12
✎
16:11
|
(12)
если есть "111" "123" надо удалить "123" "111" так что ли ? |
|||
16
Азазелло
18.09.12
✎
16:11
|
(14) эт почему вдруг?
|
|||
17
Азазелло
18.09.12
✎
16:11
|
(15) именно
|
|||
18
МихаилМ
18.09.12
✎
16:12
|
+(11)
сварачивать не нужно, само свернется |
|||
19
Mort
18.09.12
✎
16:13
|
(7) +1
(9) После этого тупо будут пары всего чего можно. |
|||
20
Азазелло
18.09.12
✎
16:13
|
(18) не улавливаю ход мыслей... :(
|
|||
21
PR
18.09.12
✎
16:13
|
Задача в (0) из серии "Летят два крокодила, один зеленый, а другой на юг. Сколько мне лет?".
Может стоит для начала хотя бы напомнить значение термина "Аддитивный", а то Яндекс тупит http://yandex.ru/yandsearch?text=аддитивный&lr=213 и выдает всякую хрень? |
|||
22
Азазелло
18.09.12
✎
16:13
|
(19) после (7) будет то же самое.
|
|||
23
Азазелло
18.09.12
✎
16:14
|
(21) "аддитивный" в данном случае - нечувствительный к перестановке.
|
|||
24
Ненавижу 1С
гуру
18.09.12
✎
16:15
|
ВЫБРАТЬ Поле1, Поле2
ИЗ Т ГДЕ Поле1<=Поле2 это что ли? |
|||
25
PR
18.09.12
✎
16:15
|
(23) Я так и думал. Знал, просто забыл.
|
|||
26
Ёпрст
18.09.12
✎
16:15
|
select t.a,t.b
from table as t inner join table as t2 on t.b+t.a <> t2.a+t2.b не ? |
|||
27
Азазелло
18.09.12
✎
16:15
|
Ладно, опишу суть проблемы, так сказать, физику, чтобы яснее стало. Есть регистр расстояний между городами. Так вот расстояние от города А до Б равно расстоянию от Б до А. И в регистре нет необходимости хранить 2 записи, отдельно для А-Б и отдельно для Б-А
|
|||
28
Mort
18.09.12
✎
16:16
|
(22) Ну 7 надо немного подпилить
(23) Тада в (0) херня написана. |
|||
29
PR
18.09.12
✎
16:16
|
+(25) А, простите, перестановке чего? А то опять забыл.
|
|||
30
Ненавижу 1С
гуру
18.09.12
✎
16:16
|
(27) лишние надо удалить?
|
|||
31
Азазелло
18.09.12
✎
16:16
|
(29) ну ладно, ладно... коряво написал...
|
|||
32
Axel2009
18.09.12
✎
16:17
|
на
ВЫБРАТЬ втСвязи.* ИЗ втСвязи КАК втСвязи ЛЕВОЕ СОЕДИНЕНИЕ втСвязи КАК втСвязи2 ПО втСвязи.Пункт1 = втСвязи2.Пункт2 И втСвязи.Пункт2 = втСвязи2.Пункт1 И втСвязи.Пункт1 > втСвязи2.Пункт1 ГДЕ втСвязи2.Пункт1 ЕСТЬ NULL |
|||
33
Kreont
18.09.12
✎
16:17
|
(27) Ну не всегда растояние от А к Б, будет равно от Б к А, проверено на пробках :)
|
|||
34
PR
18.09.12
✎
16:18
|
А, по ходу телепат починили.
То есть из набора комбинаций 0 0 0 1 1 0 1 1 нужно удалить 1 0 и 1 1 потому что они получатся, если в 0 0 и 0 1 переставить элементы местами? |
|||
35
Axel2009
18.09.12
✎
16:18
|
(28) как бы в 7 отфильтруются все 1,2 и 2,1
|
|||
36
Азазелло
18.09.12
✎
16:18
|
(30) лишнии просто не надо записывать. у меня сейчас есть большая таблица вида ГородА ГородБ Расстояние. так вот, мне нужно в регистре отразить расстояния между пунктами, и я не хочу плодить лишние записи. т.к. в таблице встречаются строки вида Москва Краснодар ХХХ, Краснодар Москва ХХХ
|
|||
37
Axel2009
18.09.12
✎
16:19
|
(34) нужно из
0 0 0 1 1 0 1 1 оставить 0 0 0 1 либо 1 0 1 1 |
|||
38
Ненавижу 1С
гуру
18.09.12
✎
16:19
|
ВЫБРАТЬ РАЗЛИЧНЫЕ
ВЫБОР КОГДА Поле1<Поле2 ТОГДА Поле1 ИНАЧЕ Поле2 КОНЕЦ КАК Поле1, ВЫБОР КОГДА Поле1>Поле2 ТОГДА Поле1 ИНАЧЕ Поле2 КОНЕЦ КАК Поле2 ИЗ Т |
|||
39
Азазелло
18.09.12
✎
16:19
|
(34) нет, нужно учесть 1 2, но только 1 раз, т.к. это эквивалентно 2 1
|
|||
40
PR
18.09.12
✎
16:19
|
+(34) Не видел (27).
|
|||
41
Mort
18.09.12
✎
16:20
|
(35) С какого перепугу? Мы будем объединять только по первым двум полям для отсечения.
|
|||
42
Ненавижу 1С
гуру
18.09.12
✎
16:20
|
(39) смотри (38)
|
|||
43
Ёпрст
18.09.12
✎
16:23
|
(38) красиво
|
|||
44
Азазелло
18.09.12
✎
16:23
|
(32) рабочий вариант, но (38) просто поразил!!! все гениальное, как говорится, просто...
|
|||
45
PR
18.09.12
✎
16:25
|
(44) А что, у нас у городов есть порядковый номер в каком-то реквизите?
|
|||
46
Азазелло
18.09.12
✎
16:26
|
(45) нет. но, насколко помню, для ссылок операции сравнения тоже работают
|
|||
47
vmv
18.09.12
✎
16:26
|
(0) првелбы пример с предикатами "М" и "Ж" - уже бы решили задачу деления уникальных пар множеств, в принципе ее на 1-м курсе по диккретке решают - ерунда
|
|||
48
PR
18.09.12
✎
16:28
|
(460 LOL
Тогда ВЫБРАТЬ втСвязи.* ИЗ втСвязи КАК втСвязи1 ЛЕВОЕ СОЕДИНЕНИЕ втСвязи КАК втСвязи2 ПО втСвязи1.Пункт1 <= втСвязи2.Пункт2 Не? |
|||
49
PR
18.09.12
✎
16:28
|
+(48) К (46) ессно.
|
|||
50
Азазелло
18.09.12
✎
16:29
|
(49) o_O
|
|||
51
vmv
18.09.12
✎
16:29
|
плагиатсвую для конкретных чуваков
Есть таблица вида "Ж" "Ж" "Ж" "М" "М" "Ж" "М" "М" На выходе запросом получить "Ж" "Ж" "Ж" "М" "М" "М" , т.е. не важно в каких позах, важно в каком составе |
|||
52
Азазелло
18.09.12
✎
16:30
|
(51) неее, "М" "М" нам не надо!!! Требую модифицировать условия задачи )))
|
|||
53
vmv
18.09.12
✎
16:32
|
(52) такие задачи решают образно, так что если закрыть галаза на мораль, то решение очевидно в образах в случае его четкого представления
|
|||
54
Classic
18.09.12
✎
16:32
|
ВЫБРАТЬ
втСвязи.* ИЗ втСвязи КАК втСвязи ЛЕВОЕ СОЕДИНЕНИЕ втСвязи КАК втСвязи1 ПО втСвязи.П2 = втСвязи1.П1 И втСвязи.П1 = втСвязи1.П2 И втСвязи.П1 > втСвязи.П2 ГДЕ втСвязи1.П1 Есть NULL |
|||
55
Азазелло
18.09.12
✎
16:33
|
(54) да, уже было в (32). Но все равно (38) круче )
|
|||
56
Classic
18.09.12
✎
16:34
|
(55)
Да, (38) крутяк |
|||
57
Ненавижу 1С
гуру
18.09.12
✎
16:36
|
ну где мой приз ужо?
|
|||
58
PR
18.09.12
✎
16:36
|
+(48) Немного не логично получилось из-за синонима.
ВЫБРАТЬ Города.* ИЗ Города КАК Города1 ЛЕВОЕ СОЕДИНЕНИЕ Города КАК Города2 ПО Города1.Ссылка <= Города2.Ссылка А если нужно именно из втСвязи выбрать, то ВЫБРАТЬ втСвязи.* ИЗ втСвязи КАК втСвязи ГДЕ втСвязи.Пункт1 <= втСвязи.Пункт2 |
|||
59
Classic
18.09.12
✎
16:36
|
Хотя не, не крутяк
При наборе 1 0 Он выдаст 0 1 Что не согласуется с задачей |
|||
60
Ненавижу 1С
гуру
18.09.12
✎
16:39
|
(59) согласуется, порядок не важен
правильно писать не "аддитивные", а "неупорядоченные пары" |
|||
61
Азазелло
18.09.12
✎
16:40
|
(59) почему нет? вполне согласуется, особенно в примере, приведенном в (51)
|
|||
62
vmv
18.09.12
✎
16:40
|
усложним задачу
(38) круто только для тех элементов таблиц которые можно сравнить посредством примитивного оператора "<" или меньше ">", а если условия задать так "Трава душистая" "Трава душистая" "Трава душистая" "Грибы маслянные" "Грибы маслянные" "Трава душистая" "Грибы маслянные" "Грибы маслянные" "Трава зернистая" "Грибы сушоные" то приплыли |
|||
63
Classic
18.09.12
✎
16:40
|
(60)
Про порядок нигде не сказано |
|||
64
Ненавижу 1С
гуру
18.09.12
✎
16:41
|
(62) в чем отличие
(63) телепатию надо прокачивать )) |
|||
65
PR
18.09.12
✎
16:41
|
+(58) Или может получиться так, что есть запись
1 0 но нет записи 0 1 ? Если так, то решается так ВЫБРАТЬ втСвязи.Город1 КАК Город1, втСвязи.Город2 КАК Город2 ИЗ втСвязи КАК втСвязи ГДЕ втСвязи.Пункт1 <= втСвязи.Пункт2 ОБЪЕДИНИТЬ ВЫБРАТЬ втСвязи.Город2 КАК Город1, втСвязи.Город1 КАК Город2 ИЗ втСвязи КАК втСвязи ГДЕ втСвязи.Пункт1 > втСвязи.Пункт2 или как у гражданина, не знающего разницы между NULL и НЕОПРЕДЕЛЕНО :)) |
|||
66
Азазелло
18.09.12
✎
16:41
|
(63) да это я так условие задачи криво поставил
|
|||
67
Classic
18.09.12
✎
16:41
|
(62)
Во-первых на строках можно делать сравнение Во-вторых см. во-первых |
|||
68
Ненавижу 1С
гуру
18.09.12
✎
16:42
|
(65) с острил? иди учи уже что такое момент времени ))
|
|||
69
PR
18.09.12
✎
16:43
|
(68) Да я как бы в курсе :))
|
|||
70
Ненавижу 1С
гуру
18.09.12
✎
16:44
|
(69) ну сейчас то да, но недавно как бы был нет
|
|||
71
Азазелло
18.09.12
✎
16:45
|
Оффтоп. А кто без консоли скажет, что больше, ИСТИНА, или ЛОЖЬ? )
|
|||
72
Ненавижу 1С
гуру
18.09.12
✎
16:46
|
(71) ясно, что Истина, ведь Истина это 1, а Ложь это 0
|
|||
73
PR
18.09.12
✎
16:47
|
(70) Наглая ложь и провокация :))
|
|||
74
Ненавижу 1С
гуру
18.09.12
✎
16:49
|
(73) ну что-то было... да ладно не суть важно
про NULL и Неопределено это концепция целая, 1с ее приняла - получила свои плюсы и свои минусы |
|||
75
Азазелло
18.09.12
✎
16:50
|
(72) не всегда
|
|||
76
pessok
18.09.12
✎
16:51
|
(75) шо?
|
|||
77
Ненавижу 1С
гуру
18.09.12
✎
16:51
|
(73) даже нашел v8: как получить срез последних документов на дату
|
|||
78
vmv
18.09.12
✎
16:51
|
скажем так - пары нетипизированы, что тогда?
а решение есть, его все прахадили, но забухались |
|||
79
ssh2006
18.09.12
✎
16:52
|
(75) в СП
Если типы данных совпадают, то производится сравнение значений по следующим правилам: у типа Булево значение ИСТИНА больше значения ЛОЖЬ; |
|||
80
Азазелло
18.09.12
✎
16:52
|
(79) это в 1С :) в других ЯП не всегда ИСТИНА = 1
|
|||
81
pessok
18.09.12
✎
16:54
|
(80) примерчик, пожалуйста. ну тока не брейнфак
|
|||
82
vmv
18.09.12
✎
16:54
|
(80) это ущербные языки
|
|||
83
PR
18.09.12
✎
16:55
|
(77) И что именно ты нашел? 55 пост в той ветке не мой, если че. Точнее надо быть, точнее :))
|
|||
84
Ненавижу 1С
гуру
18.09.12
✎
16:57
|
(80) ну бывает и -1 также, наверное и не только
(83) там 55 и не мой тоже)) там и далее показывают твои "знания" (78) ничего страшного, смотри: ВЫБРАТЬ ЗНАЧЕНИЕ(Справочник.Качество.Новый) КАК Поле1, 10 КАК Поле2 ПОМЕСТИТЬ Т ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Вася", ЗНАЧЕНИЕ(ПЕРЕЧИСЛЕНИЕ.СтавкиНДС.НДС10) ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ЗНАЧЕНИЕ(ПЕРЕЧИСЛЕНИЕ.СтавкиНДС.НДС10), "Вася" ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗЛИЧНЫЕ ВЫБОР КОГДА Т.Поле1 < Т.Поле2 ТОГДА Т.Поле1 ИНАЧЕ Т.Поле2 КОНЕЦ КАК Поле1, ВЫБОР КОГДА Т.Поле1 > Т.Поле2 ТОГДА Т.Поле1 ИНАЧЕ Т.Поле2 КОНЕЦ КАК Поле2 ИЗ Т КАК Т |
|||
85
Азазелло
18.09.12
✎
16:58
|
(81) У васика, например, тру = -1
|
|||
86
Азазелло
18.09.12
✎
17:01
|
+(85) ну, или когда работаешь с COM, например
|
|||
87
PR
18.09.12
✎
17:05
|
(84) Не вижу в той ветке демонстрации моих знаний по моменту времени, только по использованию максимума по моменту времени в запросе.
|
|||
88
Ненавижу 1С
гуру
18.09.12
✎
17:09
|
(87) этого достаточно
|
|||
89
Ненавижу 1С
гуру
18.09.12
✎
17:12
|
+(88) конкретно твои посты были 124-й, 130-й ну и далее, вот тут дал жару v8: как получить срез последних документов на дату
|
|||
90
Axel2009
18.09.12
✎
17:13
|
оо, я темнота оказывается
"Всем, кто не знает, как определить, какой из документов с одинаковой датой более поздний _быстро_ марш изучать матчасть!" =) |
|||
91
Kreont
18.09.12
✎
17:20
|
(71) ИСТИНА канешно, так как 6 букв, ЛОЖЬ - 4 :)
|
|||
92
Reset
18.09.12
✎
17:25
|
Тогда уж ЛОЖЬ>, т.к. Л>И
|
|||
93
Ненавижу 1С
гуру
18.09.12
✎
17:25
|
(92) в английской версии наоборот ))
|
|||
94
Kreont
18.09.12
✎
17:26
|
(92) Дети в 1-3 классе тебе не поверят :)
|
|||
95
Mafoni
18.09.12
✎
17:28
|
(0) - тебе обязательно это делать запросом ?
|
|||
96
Азазелло
18.09.12
✎
17:34
|
(95) не запросом не интересно )
|
|||
97
Kreont
18.09.12
✎
17:49
|
Приходит еврей к раввину:
- Ребе, у меня гуси болеют! - А чем ты их кормишь? - Просом. - Попробуй гречкой. Через некоторое время еврей снова приходит: - Ребе, они все равно болеют! - А как ты им сыплешь корм? - Кучкой. - Попробуй треугольничком. Через некоторое время: - Ребе, они все равно болеют! - Попробуй рис и квадратиком. Наконец еврей сообщает: - Ребе, все мои гуси сдохли все! - Жаль! У меня было еще столько вариантов! |
|||
98
Mafoni
18.09.12
✎
17:49
|
(96) - правильный ответ уже был ?
|
|||
99
Азазелло
18.09.12
✎
17:51
|
(98) посмотри (38)
|
|||
100
salvator
18.09.12
✎
17:51
|
Ну че, 100?
|
|||
101
Mafoni
18.09.12
✎
17:53
|
(99) все не читал ! :)
но свой запрос уже написал !!! ВЫБРАТЬ "1" КАК Пункт1, "1" КАК Пункт2 ПОМЕСТИТЬ втСвязи ОБЪЕДИНИТЬ ВЫБРАТЬ "1", "2" ОБЪЕДИНИТЬ ВЫБРАТЬ "2", "1" ОБЪЕДИНИТЬ ВЫБРАТЬ "2", "2" ОБЪЕДИНИТЬ ВЫБРАТЬ "2", "3" ОБЪЕДИНИТЬ ВЫБРАТЬ "1", "3" ОБЪЕДИНИТЬ ВЫБРАТЬ "3", "1"; ВЫБРАТЬ РАЗЛИЧНЫЕ тз.Пункт1 , тз.Пункт2 ИЗ ( ВЫБРАТЬ ВЫБОР КОГДА втСвязи.ПУНКТ1 > втСвязи.ПУНКТ2 ТОГДА втСвязи.ПУНКТ2 ИНАЧЕ втСвязи.ПУНКТ1 КОНЕЦ КАК Пункт1, ВЫБОР КОГДА втСвязи.ПУНКТ1 > втСвязи.ПУНКТ2 ТОГДА втСвязи.ПУНКТ1 ИНАЧЕ втСвязи.ПУНКТ2 КОНЕЦ КАК Пункт2 ИЗ втСвязи КАК втСвязи) КАК ТЗ ГДЕ тз.Пункт1 <> тз.Пункт2 ; УНИЧТОЖИТЬ втСвязи; |
|||
102
Азазелло
18.09.12
✎
18:01
|
(101) вот это тз.Пункт1 <> тз.Пункт2 - лишнее
|
|||
103
prog01
18.09.12
✎
18:08
|
(0)а ты вакансию открой и всё тебе соискатели порешают
сейчас все бедные родственники учредителя на должности начальников отделов так и делают |
|||
104
Mafoni
18.09.12
✎
18:19
|
(102) - чего ж лишнее этим условием я убираю маршруты где пункт назначения равен пункту отправки
хотя если оно надо то можно это условие оставить |
|||
105
PR
18.09.12
✎
18:35
|
(89) Так я и написал, что про запрос лажанул, да.
Но как из этого следует, что я не знаю, что такое момент времени документа? |
|||
106
Ненавижу 1С
гуру
18.09.12
✎
21:45
|
(105) довольно тяжбу вести, зря я начал, прошу прощения уже я
|
|||
107
rphosts
19.09.12
✎
06:29
|
ну так что решили уже?
свой вариант: тупо отбираем с условием: (Поле1 = Поле2) ИЛИ (Поле1 < Поле2) |
|||
108
PR
19.09.12
✎
11:57
|
(107) Вообще-то (58).
|
|||
109
rphosts
19.09.12
✎
14:23
|
(108) кстати да! почему-бы не 1 условие вместо 2... вот так всегда до 1 дозы кофе!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |