Имя: Пароль:
1C
1C 7.7
v7: узнать количество совпадений в табличке
,
0 monsterZE
 
03.04.15
17:19
вообще тема скорее по sql
есть запрос выбирающий значения из таблички1 (документы)
эти значения могут встречаться в табличке2 (документы по складам)
как мне в первом запросе получить количество из второй таблички?
1 Ёпрст
 
03.04.15
17:21
left join
2 mikecool
 
03.04.15
17:22
(1) + Count(Ссылка) - любое поле, а не *
3 monsterZE
 
03.04.15
17:22
этот запрос в ТП =) оно джойнит несколько значений
4 Ёпрст
 
03.04.15
17:22
можешь даже сделать group by потом и через count подсчитать их количество
5 Ёпрст
 
03.04.15
17:22
(2) ага
:)
6 monsterZE
 
03.04.15
17:24
не. это все не то =)
7 Ёпрст
 
03.04.15
17:24
(6) ну и ладно
8 mikecool
 
03.04.15
17:25
(6) тогда сделай то, будь мужиком!
9 monsterZE
 
03.04.15
17:26
в ТП вывожу список документов
в одном документе может быть несколько складов
оператор разослал доки по складам
в табличке появились записи
док1 склад1
док1 склад2
если я сделаю в основном запросе лефт джойн с этой табличкой, то джойнятся обе строки
10 monsterZE
 
03.04.15
17:27
(8) вот я и пытаюсь =)
11 ДенисЧ
 
03.04.15
17:28
сгруппируй "табличку", будь блЪ, мужик!...
12 Ёпрст
 
03.04.15
17:28
(9) в подзапросе сверни по доку, подсчитай количество, джойни потом это по доку с основной табличкой, бутд мужиком!
13 Попытка1С
 
03.04.15
17:28
Индексированная таблица, сгруппировать по складу, посчитать.
14 Попытка1С
 
03.04.15
17:29
Или через with roll up
15 Попытка1С
 
03.04.15
17:29
with rollup т.е.
16 Ёпрст
 
03.04.15
17:30
будет
select док,таб.вася from table left join (select sum(вася),док from tabledoc griup by Док) as таб on таб.док=док
17 monsterZE
 
03.04.15
17:31
(12) ясно
а если просто вхождение проверить
есть запись =1 нет =0
18 monsterZE
 
03.04.15
17:32
чтоб без группировки в подзапросе
19 ДенисЧ
 
03.04.15
17:34
(18) тебе нужно количество? Или у тебя цель не использовать группировки?
20 monsterZE
 
03.04.15
17:36
(19) не, количество не обязательно
просто проверить присутствие документа в табличке
21 Ёпрст
 
03.04.15
17:37
(20) ну используй exists
22 Ёпрст
 
03.04.15
17:38
И хоть ы селекте проверяй в коррелированном подзапросе
23 Ёпрст
 
03.04.15
17:38
есть там твой док во второй табличке , али нету.
24 Ёпрст
 
03.04.15
17:47
понял не ?

от так будет, если че

select case when exists(select * from table2 where table1.doc = table2.doc) then 'яя натурлих' else 'не было там документов' end
from table1
25 monsterZE
 
03.04.15
17:52
(24) да это я группировкой попробывал
    |LEFT JOIN
    |(
    |    SELECT
    |        SUM(1) as Сч
    |        ,$МаркДок.ИДДок as ИД
    |    FROM
    |        $Справочник.МаркедДок as МаркДок (NOLOCK)
    |    GROUP BY
    |       $МаркДок.ИДДок
    |) as М ON RIGHT(М.ИД,9) = Жур.IDDoc
26 monsterZE
 
03.04.15
17:53
прост думаю не будет оно шибко тормозить =) когда в табличке дохрена записей появится
27 Ёпрст
 
03.04.15
17:53
(25) как ЭТО коррелирует с (18) ?
28 monsterZE
 
03.04.15
17:55
(27) спокойствие, это просто как вариант =)
29 monsterZE
 
03.04.15
18:19
в селекте
    |   ,CASE WHEN EXISTS (SELECT * FROM $Справочник.МаркедДок where RIGHT($Справочник.МаркедДок.ИДДок,9) = Жур.IDDoc) THEN 1
    |   ELSE 0 END as Маркер
30 monsterZE
 
03.04.15
18:19
(29) будет быстрее (25) ? =)
31 Ёпрст
 
03.04.15
21:21
(30) проверяй, тебе же надо :)
а так, (25) вполне себе  быстро
32 Ёпрст
 
03.04.15
21:22
ну и как бэ.. запросы разные
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.