Независимый форум, посвященный системе БОСС-Кадровик и всему, что с ней связано
|
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
clawn
Зарегистрирован: 04.08.2008 Сообщения: 4 Откуда: СПб
|
Добавлено: Ср Авг 06, 2008 15:09 Заголовок сообщения: Не работает запрос |
|
|
Подскажите, пожалуйста, почему может не работть следующий запрос:
BROWSER
{
SELECT
C.Auto_Card as "Код физлица",
C.Full_Name as "ФИО",
P.PID as "Код работника",
P.in_date as "Дата приема",
S.Struct_Code as "Код Подразделения",
S.Struct_Parent as "Код род подразделения",
S.Struct_Name as "Имя подразделения",
S2.Struct_Name as "Имя род подразделения"
FROM CARD C
JOIN PEOPLE P on C.Auto_Card = P.Auto_Card
JOIN STRUCTS S on P.Struct_Code = S.Struct_Code
JOIN STRUCTS S2 on S.Struct_Parent = S2.Struct_Code
}
если я его запускаю в SQL - все работает нормально,а БОСС пишет, что не может найти S2.Struct_Code почему-то... |
|
Вернуться к началу |
|
 |
clawn
Зарегистрирован: 04.08.2008 Сообщения: 4 Откуда: СПб
|
Добавлено: Ср Авг 06, 2008 17:02 Заголовок сообщения: |
|
|
я конечно обошел это путем создания вьюхи и отчета select * from view, но почему не работают joins в БОССе - непонятно.
было бы классно выложить отдельной супер-темой синтаксис Х-языка и его возможности!!! |
|
Вернуться к началу |
|
 |
Vitaly Большой шоколадный орден

Зарегистрирован: 29.07.2008 Сообщения: 281 Откуда: Санкт-Петербург
|
Добавлено: Чт Авг 07, 2008 10:40 Заголовок сообщения: |
|
|
возможно что-то с вложенностью Join'тов в БОССе... такой вариант работает
SELECT
C.Auto_Card as "Код физлица",
C.Full_Name as "ФИО",
P.PID as "Код работника",
P.in_date as "Дата приема",
S.Struct_Code as "Код Подразделения",
S.Struct_Parent as "Код род подразделения",
S.Struct_Name as "Имя подразделения",
S2.Struct_Name as "Имя род подразделения"
FROM CARD C, PEOPLE P, STRUCTS S, STRUCTS S2
Where C.Auto_Card = P.Auto_Card
And P.Struct_Code = S.Struct_Code
And S.Struct_Parent = S2.Struct_Code
|
|
Вернуться к началу |
|
 |
Владимир
Зарегистрирован: 08.08.2008 Сообщения: 2
|
Добавлено: Пт Авг 08, 2008 15:39 Заголовок сообщения: Не работает запрос |
|
|
А вот так попробуйте:
BROWSER
{
SELECT
C.Auto_Card as "Код физлица",
C.Full_Name as "ФИО",
P.PID as "Код работника",
P.in_date as "Дата приема",
S.Struct_Code as "Код Подразделения",
S.Struct_Parent as "Код род подразделения",
S.Struct_Name as "Имя подразделения",
S2.Struct_Name as "Имя род подразделения"
FROM CARD C _HINTBROWSER
JOIN PEOPLE P on C.Auto_Card = P.Auto_Card
JOIN STRUCTS S on P.Struct_Code = S.Struct_Code
JOIN STRUCTS S2 on S.Struct_Parent = S2.Struct_Code
} |
|
Вернуться к началу |
|
 |
clawn
Зарегистрирован: 04.08.2008 Сообщения: 4 Откуда: СПб
|
Добавлено: Пт Авг 08, 2008 18:05 Заголовок сообщения: |
|
|
а так работает, спасибо!
_HINTBROWSER - то есть это надо вставлять в любой запрост с joinтами? |
|
Вернуться к началу |
|
 |
Владимир
Зарегистрирован: 08.08.2008 Сообщения: 2
|
Добавлено: Пн Авг 25, 2008 17:46 Заголовок сообщения: |
|
|
Да, _HINTBROWSER стоит вставлять в запросах с JOIN-ами.
Дело в том, что X-язык пробует сам расставить некоторые хинты в запросах, которые он обрабатывает.
Но в запросах с JOIN-ами он этого делать не умеет.
В таких случаях 3 варианта:
1. Воспользоваться хинтом NO_HINT
Соответственно, X-язык в этом случае ничего делать не будет.
2. Воспользоваться хинтом (NO LOCK)
3. Воспользоваться хинтом _HINTBROWSER
Фактически всеравно будет подставлен (NO LOCK)
Последние 2 варианта - хинты могут быть продублированы после имени каждой таблицы.
Но достаточно их упомянуть 1 раз, чтобвы X-язык больше ничего не делал. |
|
Вернуться к началу |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|