|
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
|
ну и как бэ.. запросы разные
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |