Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Не видит поле после перехода с 2.5 на 3 FB / 13 сообщений из 13, страница 1 из 1
26.10.2017, 09:31
    #39542159
KonstF
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не видит поле после перехода с 2.5 на 3 FB
Всем доброго дня!
Перевожу БД с 2.5 на 3 и столкнулся с такой странностью - при компиляции вирт. таблицы ругается на несуществующее поле!
Хотя поле на месте. Ругается в версии FB3. IBExpert - 2017.10.1.1!
База с которой снимал структуру - заведомо рабочая!

Подскажите, что не так делаю!

can't format message 13:794 -- message file C:\Windows\SYSTEM32\firebird.msg not found.
Dynamic SQL Error.
SQL error code = -206.
Column unknown.
NOTIFDETAIL.ACTIVEOBJ_ID.
At line 7, column 55.

Код: sql
1.
2.
3.
4.
  select
    notifdetail.notifdetail
  from notifdetail, activeobj GLAO
    left join activeobj on activeobj.activeobj_id = notifdetail.activeobj_id
...
Рейтинг: 0 / 0
26.10.2017, 09:35
    #39542165
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не видит поле после перехода с 2.5 на 3 FB
KonstF,

в релизнотах про это сказано. Не надо мешать явные и неявные JOIN
...
Рейтинг: 0 / 0
26.10.2017, 09:39
    #39542166
KonstF
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не видит поле после перехода с 2.5 на 3 FB
Прошу прощения!

Ситуация следующая в вирт таблице есть пачка джойнов и одно явное перемножение таблиц в стиле ... from a, b Where a.a1 = b.b1
дак вот - после перехода с 2.5 на 3 компилятор IBExpert стал ругаться на
Код: sql
1.
2.
3.
 from notifdetail, activeobj GLAO
  Where
    notifdetail.activeobj_id = GLAO.activeobj_id



если переписать на

Код: sql
1.
2.
3.
4.
5.
 from notifdetail, activeobj GLAO
      inner join activeobj GLAO on     notifdetail.activeobj_id = GLAO.activeobj_id
      left join ...
/*  Where
    notifdetail.activeobj_id = GLAO.activeobj_id*/



то все компилится! Собственно - почему нельзя использовать вместе перемножение в условии вместе с джойнами ?
...
Рейтинг: 0 / 0
26.10.2017, 09:42
    #39542168
Tactical Nuclear Penguin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не видит поле после перехода с 2.5 на 3 FB
KonstFто все компилится! Собственно - почему нельзя использовать вместе перемножение в условии вместе с джойнами ?

тебе уже ж написали - FB3 не поддерживает смешивание явных и неявных join
...
Рейтинг: 0 / 0
26.10.2017, 09:45
    #39542171
KonstF
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не видит поле после перехода с 2.5 на 3 FB
авторTactical Nuclear Penguin , когда отправил второе сообщение страница не была еще обновлена!

авторСимонов Денис , спасибо!
Вопрос снят!
...
Рейтинг: 0 / 0
26.10.2017, 09:47
    #39542175
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не видит поле после перехода с 2.5 на 3 FB
KonstF
Код: sql
1.
2.
activeobj GLAO
    left join activeobj on activeobj.activeobj_id = notifdetail.activeobj_id

Это условие джойна activeobj GLAO и activeobj.
Тут нет notifdetail, о чём сервер и сообщает.

Пишите запросы правильно, и всё будет хорошо.
...
Рейтинг: 0 / 0
26.10.2017, 10:38
    #39542202
KonstF
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не видит поле после перехода с 2.5 на 3 FB
авторhvlad
Изначально конструкция была следующая
Код: sql
1.
2.
3.
4.
5.
6.
7.
  
  select
      *
  from notifdetail, activeobj GLAO
      left join activeobj VAO on VAO.activeobj_id = notifdetail.activeobj_id
  Where
    notifdetail.activeobj_id = GLAO.activeobj_id


при этом IBEXP. ругался на поле notifdetail.activeobj_id - если переписать на inner то все норм.
...
Рейтинг: 0 / 0
26.10.2017, 11:44
    #39542282
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не видит поле после перехода с 2.5 на 3 FB
KonstFИзначально конструкция была следующаяЯ знаю.
Прочитай ещё 5 раз то, что я написал, пока не поймёшь свою ошибку.
...
Рейтинг: 0 / 0
26.10.2017, 11:46
    #39542286
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не видит поле после перехода с 2.5 на 3 FB
KonstFselect
*
from notifdetail, activeobj GLAO
left join activeobj VAO
мне интересно, какими адскими правилами руководствуется человек, который пишет вот такое.
Или это склероз, типа писал неявные джойны, потом перешел на явные, и тут вдруг чуваки пиво позвали пить, и т.д.?
...
Рейтинг: 0 / 0
26.10.2017, 11:49
    #39542291
Ivan_Pisarevsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не видит поле после перехода с 2.5 на 3 FB
kdvкакими адскими правилами руководствуется человек, который пишет вот такоеи не говори, хорошо когда в форуме про это трындят, а когда оно сидит в коде сопровождаемого софта... иной раз вспоминаю родственников вплоть по пятого колена, когда выпиливаю подобные выкрутасы. :)
...
Рейтинг: 0 / 0
26.10.2017, 11:49
    #39542292
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не видит поле после перехода с 2.5 на 3 FB
KonstFfrom notifdetail, activeobj GLAO
кроме того - notifdetail без алиаса, activeobj с алиасом, завернули рыбу, и прочее? Два ужаса в одном простом запросе.
...
Рейтинг: 0 / 0
26.10.2017, 12:12
    #39542326
KonstF
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не видит поле после перехода с 2.5 на 3 FB
Ребят - вот зачем так!

Рыбу не заворачивал ) - я же упомянул, что это фрагмент!

Почти полный исходник вот, просто смысл грузить форумчан простынями кода, если суть озвучил в оновнй выборке!

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
select
      notifdetail.notifdetail,
      notifdetail.notification_id,                                                                                               
      notifdetail.activeobj_id,                                                                                                  
      notifdetail.pattern_id,

      case when notifdetail.activeobj_id > 0 then VAO.activeobj_filename else VPT.pattern_filename end Document_Name,
      case when notifdetail.activeobj_id > 0 then VAO.activeobj_filepath else VPT.pattern_filepath end Document_Destin,

      case when GLAO.activeobj_pid > 0
        then 'Документ { продленный }-Архив'
        else
            ( case when notifdetail.activeobj_id > 0 then 'Документ' else 'Шаблон' end )
      end Document_Type,

      ( case when notifdetail.activeobj_id > 0 then LogACtObj.username_id else LogPattern.username_id end ) username_id,

      case when LogACtObj.activeobj_id > 0                                                                                       
          then                                                                                                                   
              case when activeobj.activeobj_id > 0 then 'Ознакомлен' else 'Не Ознакомлен' end
          else                                                                                                                   
              case when pattern.pattern_id > 0 then 'Ознакомлен' else 'Не Ознакомлен' end
      end notifdetail_view

  from notifdetail, activeobj GLAO

      left join activeobj VAO on VAO.activeobj_id = notifdetail.activeobj_id
      left join pattern VPT on VPT.pattern_id = notifdetail.pattern_id

      left join log_activeobj LogACtObj on LogACtObj.activeobj_id = notifdetail.activeobj_id
          left join activeobj on LogACtObj.activeobj_id = activeobj.activeobj_id                                                 
                                                                                                                                 
      left join log_activeobj LogPattern on LogPattern.pattern_id = notifdetail.pattern_id
          left join pattern on LogPattern.pattern_id = pattern.pattern_id

  Where
    notifdetail.activeobj_id = GLAO.activeobj_id
    
  Group by
    notifdetail.notifdetail,
    notifdetail.notification_id,                                                                                               
    notifdetail.activeobj_id,                                                                                                  
    notifdetail.pattern_id,
...
Рейтинг: 0 / 0
26.10.2017, 12:25
    #39542338
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не видит поле после перехода с 2.5 на 3 FB
KonstFРыбу не заворачивал ) - я же упомянул, что это фрагмент!
Почти полный исходник вот,
да нафиг нужен полный исходник если ПРОБЛЕМЫ ВО ФРАГМЕНТЕ!

проблема № 1 - неиспользование алиаса для одной таблицы запроса, и использование для других. НЕЛЬЗЯ так писать. Используй алиас для notifdetail. Нефиг втыкать это имя для всех используемых столбцов, код же хреново читать.
Или не используй алиасы для вообще всех таблиц запроса.

проблема № 2 - смешивание явных и неявных join. select from notifdetail, activeobj GLAO left join activeobj VAO - это вот кто так учил писать? Что это за ахтунг?

Если бы не было строки
KonstF Where
notifdetail.activeobj_id = GLAO.activeobj_id
то это было бы notifdetail cross join (activeobj left join activeobj)
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Не видит поле после перехода с 2.5 на 3 FB / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]