|
|
|
Select+IIF
|
|||
|---|---|---|---|
|
#18+
Добрый день! Работа из Фокса9 с Firebird через ODBC. Есть запрос на выборку из разных таблиц: SELECT H03_PERSPOLICIES.PERSON_ID, T04_POLICIES.POLICY_SERIES, T04_POLICIES.POLICY_NUMBER, H03_PERSPOLICIES.ADD_DATE,; H03_PERSPOLICIES.END_DATE, H03_PERSPOLICIES.SG_ID, T01_PERSONS.PERS_LN, T01_PERSONS.PERS_FN, T01_PERSONS.PERS_MN, ; T01_PERSONS.PERS_SEX, T01_PERSONS.PERS_BIRTH, T01_PERSONS.SNILS, H01_PERSDOCS.DOCTYPE_ID, H01_PERSDOCS.DOC_SERIES, ; H01_PERSDOCS.DOC_NUMBER, H01_PERSDOCS.DOC_DATE, H01_PERSDOCS.DOC_ORG, L02_KLADR.REGION, ; L02_KLADR.SETTLENAME, ; L02_KLADR.STREETTYPE, L02_KLADR.STREETNAME, H02_PERSADDRESSES.HOUSE, H02_PERSADDRESSES.SECTION, ; H02_PERSADDRESSES.TPE_ID, H02_PERSADDRESSES.APARTMENT, T03_CONTRACTS.ID_CONTRACT, ; T03_CONTRACTS.CONTR_STARTDATE, T03_CONTRACTS.CONTR_ENDDATE, T02_ORGS.ORG_NAME, ; T02_ORGS.RNUMBER, T02_ORGS.RNUMBER15, IIF(ISNULL(L02_KLADR.SUBREG_ID),L02_KLADR.DISTRICT_ID,L02_KLADR.SUBREG_ID) as RAYON ; FROM H03_PERSPOLICIES LEFT JOIN H01_PERSDOCS ON H03_PERSPOLICIES.PERSON_ID = H01_PERSDOCS.PERSON_ID ; LEFT JOIN H02_PERSADDRESSES ON H03_PERSPOLICIES.PERSON_ID = H02_PERSADDRESSES.PERSON_ID ; INNER JOIN T04_POLICIES ON H03_PERSPOLICIES.POLICY_ID = T04_POLICIES.ID_POLICY ; INNER JOIN T01_PERSONS ON H03_PERSPOLICIES.PERSON_ID = T01_PERSONS.ID_PERSON ; INNER JOIN T03_CONTRACTS ON H03_PERSPOLICIES.CONTRACT_ID = T03_CONTRACTS.ID_CONTRACT ; INNER JOIN T02_ORGS ON T03_CONTRACTS.ORG_ID = T02_ORGS.ID_ORG ; LEFT JOIN L02_KLADR ON H02_PERSADDRESSES.KLADR_ID = L02_KLADR.ID_KLADR Фокс 9 ругается (ошибка прилагается в файле. Функция IIF). Что здесь неверно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2008, 13:41 |
|
||
|
Select+IIF
|
|||
|---|---|---|---|
|
#18+
>Что здесь неверно? По всей видимости у Firebird нет функции IIF(), или ее синтаксис отличается от от фоксовского ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2008, 13:47 |
|
||
|
Select+IIF
|
|||
|---|---|---|---|
|
#18+
>Что здесь неверно? По всей видимости у Firebird нет функции IIF(), или ее синтаксис отличается от от фоксовского ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2008, 13:49 |
|
||
|
Select+IIF
|
|||
|---|---|---|---|
|
#18+
IIF(ISNULL(L02_KLADR.SUBREG_ID),L02_KLADR.DISTRICT_ID,L02_KLADR.SUBREG_ID) в функции iif должно быть на первом месте логическое условие, а isnull возвращает либо свой первый параметр либо второй и параметров должно быть два РОВНО ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2008, 13:50 |
|
||
|
Select+IIF
|
|||
|---|---|---|---|
|
#18+
у Firebird Есть функция IIF() Если я ставлю вместо null <>' ', то ругается на < ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2008, 14:58 |
|
||
|
Select+IIF
|
|||
|---|---|---|---|
|
#18+
сказано же у Вас по ошибке в каждой функции isnull не проверяет на равенство null и возвращает не логическое выражение если не получается откройте наконец книгу или справку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2008, 15:31 |
|
||
|
Select+IIF
|
|||
|---|---|---|---|
|
#18+
Осталось еще выяснить каким боком этот запрос к фоксу. Для фокса это просто строка, выполняет ее Firebird. Соответственно, и топик надо перенести в соответсвующую ветку форума. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2008, 15:33 |
|
||
|
Select+IIF
|
|||
|---|---|---|---|
|
#18+
если конечно действительно там есть эти функции ... но по любому в книгу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2008, 15:38 |
|
||
|
|

start [/forum/topic.php?fid=41&gotonew=1&tid=1587812]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
10ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 187ms |
| total: | 328ms |

| 0 / 0 |
