Имя: Пароль:
1C
1С v8
Исключить из результатов запроса определенные строки
0 JuixyJes
 
21.07.21
13:28
Добрый день! Подскажите... Как исключить из запроса две записи с одинаковым значением поля? Допустим это поле - наименование.

есть куча строк результата запроса, и вот в 3 и 37 строке одно и то же, как удалить из результатов запроса обе строки?
1 JuixyJes
 
21.07.21
13:29
Для ясности, мне не нужно оставлять ни одну строку из этих двух.
2 Kassern
 
21.07.21
13:29
(1) используй отборы
3 crasler
 
21.07.21
13:33
(1) Сохрани таблицу в временную с подсчетом количества совпадений и сравнивай есть ли там это наименование
4 Ёпрст
 
21.07.21
13:35
group by +having sum(нечто )=1
5 Said_We
 
21.07.21
13:35
(0) Если строки полностью одинаковые, то вместо ВЫБРАТЬ используй ВЫБРАТЬ РАЗЛИЧНЫЕ
6 Ёпрст
 
21.07.21
13:35
(5) ей надо обе удалить из выборки
7 acht
 
21.07.21
13:35
сгруппировать по чегой-то-там имеющие(количиство(чегой-то-там))=1
8 Said_We
 
21.07.21
13:36
Если обе, три и более строки надо удалить, то надо их посчитать и где более 1 в условие.
9 JuixyJes
 
21.07.21
13:39
(4) Так, я не понимаю что это значит, можете меня считать глупой, но это так:)

Можете по подробнее написать, как и где мне это сделать?
10 Ёпрст
 
21.07.21
13:39
(8) дык она же не написала, что если есть дубли строк, то такие строки не учитываем вообще
11 Ёпрст
 
21.07.21
13:40
(9) ну, в (7) по-русски то же самое
12 Said_We
 
21.07.21
13:41
(10) Как бы написала....
В (0) "как удалить из результатов запроса обе строки?"
В (1) "мне не нужно оставлять ни одну строку из этих двух."
13 Said_We
 
21.07.21
13:42
(9) Текст запроса покажи - расскажут как.
14 dubolom
 
21.07.21
13:42
(9) Новая временная таблица
ВЫБРАТЬ
ВашаТаблица.Наименование КАК Наименование
СГРУППИРОВАТЬ ПО ВашаТаблица.Наименование
ИМЕЮЩИЕ
КОЛИЧЕСТВО(ВашаТаблица.Наименование)>1
Потом делаете внутреннее соединение по полю Наименование с вашей таблицей.
15 Ёпрст
 
21.07.21
13:43
(12) и ?
не нужно оставлять ни одну строку из этих двух = удалить обе
16 Said_We
 
21.07.21
13:44
(15) Или три или более... Я так прочитал.
(14) соединения не нужны
17 Адинэснег
 
21.07.21
13:44
(15) -> (2)
18 Kassern
 
21.07.21
13:45
я прост не понимаю, что тут обсуждать, детская же задача?
Как я понял у ТС следующий результат:
Яблоко 1
Груша 3
Арбуз 10
Яблоко 2
Если стоит задача удалить именно яблоко из результата запроса, то какой смсыл что то там группировать? Тупо Где Таблица.Наименование<>"Яблоко";
Вот тогда и придем к результату описанному ТС("есть куча строк результата запроса, и вот в 3 и 37 строке одно и то же, как удалить из результатов запроса обе строки?")
19 Адинэснег
 
21.07.21
13:45
ему тупо сгруппировать надо, либо "различные" если агрегатных функций не надо
20 Kassern
 
21.07.21
13:46
(18) ну или я не понял, что именно ТС надо...
21 dubolom
 
21.07.21
13:46
(16) Чому не нужны? Как выбросить лишние строки из первоначальной таблицы?
22 acht
 
21.07.21
13:46
(14) > Новая временная таблица
Зачем?
23 Адинэснег
 
21.07.21
13:47
да он даже запрос не скинул)
24 acht
 
21.07.21
13:47
(21) Посчитать количество группировкой и выбросить те, которых слишком много
25 dubolom
 
21.07.21
13:47
(22) Получить данные по задвоениям поля Наименование. По умолчанию ведь в исходной таблице есть и другие поля.
26 Said_We
 
21.07.21
13:47
(19) Не ему, а ей и фото есть.
27 dubolom
 
21.07.21
13:47
(24) А другие колонки из исходной табилцы как подтянутся?
28 acht
 
21.07.21
13:48
(27) А с чего ты взял, что они там есть?
29 JuixyJes
 
21.07.21
13:48
(14) Вот вроде бы похоже, но только не >1 а =1 наверное
30 Адинэснег
 
21.07.21
13:49
а так удалить все таки, тогда (9)
а помните было затишье на мисте по тех. части? опять повылазили гуглопрограмиисты / мистапрограммисты
31 dubolom
 
21.07.21
13:49
(29) Да, конечно, косякнул.
(28) Не сказано, что их нет, по дефолту в таблице не одна колонка.
32 Said_We
 
21.07.21
13:49
(29) Тоже самое с =1 в (7)
33 acht
 
21.07.21
13:52
(30) Тут другое =) Тут явный https://clck.ru/1BojE
34 Said_We
 
21.07.21
13:53
(31) Если строки полностью одинаковые, то одинаковые по всем колонкам. Всё в группировку. А если какие-то поля не равны, то это не равные строки. :-)
Вместо внутреннего соединения можно использовать в условии

ГДЕ т1.Наименование в (выбрать т.Наименование из т как т ....
35 Said_We
 
21.07.21
13:58
(34)
Или так:
ГДЕ НЕ т1.Наименование в (выбрать т.Наименование из т как т .... <> 1...

Так если исключается строк не много. Как в примере в (0) до 37 строки только первое совпадение... :-)
36 Classic
 
21.07.21
14:00
(0)
Уникальное какой-то поле у строк есть?
37 dubolom
 
21.07.21
14:06
(34) Запрос был - удалить записи с одинаковым значением одного поля.
Ну да, или так, но мне соединения больше нравятся:)
38 Said_We
 
21.07.21
14:21
(37) Если условие соединения не только = или типы значений сравнения составные и т.д., то лучше не использовать СОЕДИНЕНИЯ. Может получиться сильно не быстро.
39 Мигрень
 
21.07.21
15:33
(0) нужные строки пометить на удаление и провести процедуру удаления помеченных объектов. Тогда эти строки в результат запроса не попадут
40 dubolom
 
21.07.21
15:41
(39) Не факт, что это вообще справочник. И не факт, что нужно именно удалять.
41 Мигрень
 
21.07.21
16:04
(40) в (0) написано что нужно исключить, если удалить, то они исключатся. Про справочник я нигде не писал.
42 dubolom
 
21.07.21
16:05
(41) Сегодня день толстоты на Мисте, штоле?
43 Мигрень
 
21.07.21
16:07
(42) не знаю, не измерял, рулетка нужна
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс