|
v7: SQL Like по ссылке | ☑ | ||
---|---|---|---|---|
0
Lacoster
18.04.13
✎
07:46
|
Всем привет! Есть иерархический справочник контрагенты.
В нём есть папка Кредит. Мне необходимо выбрать все контрагентов которые находятся в этой папке. Вот собственно запрос |SELECT $Реализация.СуммаВзаиморасчетов СуммаВзаиморасчетов |, Журнал.IDDOC [Документ $Документ] |, Журнал.IDDOCDEF Документ_вид |, Cast(Left(Журнал.DATE_TIME_IDDOC, 8) AS datetime) Документ_дата |, Реализация.IDDOC [Ссылка $Документ.Реализация] |, $Реализация.Контрагент [Контрагент $Справочник.Контрагенты] |, Контрагенты.PARENTID [Родитель $Справочник.Контрагенты] |, Контрагенты.ISFOLDER ЭтоГруппа |FROM _1SJOURN AS Журнал | INNER JOIN $Документ.Реализация AS Реализация With (NOLOCK) ON Журнал.IDDOC = Реализация.IDDOC | INNER JOIN $Справочник.Контрагенты AS Контрагенты With (NOLOCK) ON $Реализация.Контрагент = Контрагенты.ID |WHERE (Cast(Left(Журнал.DATE_TIME_IDDOC, 8) AS datetime) <= :кондата) | AND (Cast(Left(Журнал.DATE_TIME_IDDOC, 8) AS datetime) >= :начдата) | AND ($Реализация.Склад = :склад) | AND ((Контрагенты.PARENTID like '%кредит%') Он работает без ошибок, но не выводит то что мне нужно. А именно по тому что Контрагенты.PARENTID имеет вид типо BA0324 и в нём я лайкаю КРЕДИТ. А теперь вопрос. Как мне объяснить СКуЛю что нужно лайкать по нормальному представлению как я описал в селекте? |
|||
1
Mikeware
18.04.13
✎
07:48
|
А ты вообще понимаешь, что такое идентификатор?
|
|||
2
Wobland
18.04.13
✎
07:48
|
ты в descr хочешь искать что ли?
|
|||
3
Mikeware
18.04.13
✎
07:49
|
(2) в descr'е parent'а :-)
|
|||
4
Mikeware
18.04.13
✎
07:50
|
плять. постмотрел на г.р.
долбаный чернобыль... |
|||
5
Wobland
18.04.13
✎
07:50
|
имхается мне, лайк тут ни при чём
Контрагенты.PARENTID=:НужныйРодитель |
|||
6
Lacoster
18.04.13
✎
07:51
|
(1) понимаю. Вот я и говорю что мне нужно как-то сделать нормальный вид.
Хочу искать в нормальном виде |
|||
7
Wobland
18.04.13
✎
07:51
|
(4) годовщина скоро
|
|||
8
ЧеловекДуши
18.04.13
✎
07:52
|
(0)Организуй связь с таблицей справочника и лайкай на здоровье.
Left outer JOIN $Справочник.ДляЛайкования AS Лайк (NOLOCK) ON Контрагенты.PARENTID = Лайк .ID И уже в условии "WHERE" AND (( $Лайк.КакойУгодноУеквизит like '%кредит%') |
|||
9
Mikeware
18.04.13
✎
07:52
|
(7) по идее, он даже зачат через пол-года от событий. а все равно эффект чувствуется....
|
|||
10
Mikeware
18.04.13
✎
07:53
|
(8) КакойУгодноУеквизит на самом деле не совсем "какой угодно"
|
|||
11
Lacoster
18.04.13
✎
07:53
|
создать справочник НУжныйРодитель и сравнить с родителем?
Фишка в том что контрагенты делятся сначала на склады, потом могут делиться на манагеров и там уже есть кредитные контрагенты. В каждом складе, в каждом манагере родитель КРЕДИТ под разными кодами. |
|||
12
Lacoster
18.04.13
✎
07:53
|
вот и беда в этом
|
|||
13
ЧеловекДуши
18.04.13
✎
07:54
|
(10) Опечатолси, но вроде взлетит :)
|
|||
14
ЧеловекДуши
18.04.13
✎
07:54
|
(11) Мне побоку, что куда делится.
Я тебе привет как лайкать :) |
|||
15
ЧеловекДуши
18.04.13
✎
07:55
|
+(11) Ты про "деление" - это ты так Группы справочников называешь?
|
|||
16
ЧеловекДуши
18.04.13
✎
07:55
|
(14) >>> привет
Привел |
|||
17
Mikeware
18.04.13
✎
07:55
|
(5) ну, задача выбрать контрагентов из папок, имеющих в названии, скажем, слово "злостный должник" - вполне реальна.
|
|||
18
Lacoster
18.04.13
✎
07:56
|
(15) да, про группы
|
|||
19
Wobland
18.04.13
✎
07:56
|
(11) (17) уговорили ;)
|
|||
20
ЧеловекДуши
18.04.13
✎
07:57
|
(18) Дак и присобачь тогда еще одну связь со справочником Контрагенты :)
Что тебя смущает? Это SQL, а не 1С, тут все дело в связях ;) |
|||
21
Lacoster
18.04.13
✎
08:00
|
а если сделать так
select * from (мой запрос) where Родитель like 'Кредит' выйдет? |
|||
22
Wobland
18.04.13
✎
08:04
|
(21) сначала выберёшь всё, а потом выкинешь ненужное. вместо того, чтобы сразу взять только нужное
|
|||
23
viktor_vv
18.04.13
✎
08:05
|
Я только не пойму, а УложитьСписокОбъектов() уже немодно пользовать ?
|
|||
24
Lacoster
18.04.13
✎
08:09
|
не модно. Пытаюсь как можно больше на скуле делать
|
|||
25
Mikeware
18.04.13
✎
08:13
|
(21) нет. Типизация происходит при получении результатов запроса.
прочитай что такое идентиыфикатор, и что такое "соединение по ключу" |
|||
26
Lacoster
18.04.13
✎
08:18
|
короче пересекая кнотрагентов с контрагентами это просто ППЦ! Он очень долго задумывается. А это только 3% отчета. Мб есть более быстрый способ?
|
|||
27
МихаилМ
18.04.13
✎
08:20
|
|WHERE (Cast(Left(Журнал.DATE_TIME_IDDOC, 8) AS datetime) <= :кондата)
| AND (Cast(Left(Журнал.DATE_TIME_IDDOC, 8) AS datetime) >= :начдата) замените на Журнал.DATE_TIME_IDDOC >< строковое представление даты. иначе не работает отбор по индексу |
|||
28
viktor_vv
18.04.13
✎
08:20
|
Так я про УложитьСписокОбъектов() для скуля и говорю, для 1С++.
|
|||
29
viktor_vv
18.04.13
✎
08:25
|
А хотя, учитывая (11) не пойдеть.
|
|||
30
orefkov
18.04.13
✎
08:26
|
(26)
Гонишь. Напиши тогда так: and Контрагенты.parentid in (select id from $Справочник.Контрагенты (nolock) where descr like '%кредит%' Хотя - показанный тобой в (0) запрос совершенно не соответствует заявленной цели: "есть папка Кредит. Мне необходимо выбрать все контрагентов которые находятся в этой папке." Если необходима именно эта цель, то надо либо "УложитьСписокОбъектов", если вложенность более 2 уровней, либо "Контрагенты.parentid=:ВыбГруппа" + "УстановитьТекстовыйПараметр". А все твое "Пытаюсь как можно больше на скуле делать" - это от того, что ты еще новичек в SQL. |
|||
31
orefkov
18.04.13
✎
08:28
|
(11)
Опа, выясняется, что в (0) - совершенно другая постановка задачи. Умываю руки. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |