powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Не видит поле после перехода с 2.5 на 3 FB
13 сообщений из 13, страница 1 из 1
Не видит поле после перехода с 2.5 на 3 FB
    #39542159
KonstF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго дня!
Перевожу БД с 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
Не видит поле после перехода с 2.5 на 3 FB
    #39542165
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KonstF,

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

Ситуация следующая в вирт таблице есть пачка джойнов и одно явное перемножение таблиц в стиле ... 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
Не видит поле после перехода с 2.5 на 3 FB
    #39542168
Tactical Nuclear Penguin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KonstFто все компилится! Собственно - почему нельзя использовать вместе перемножение в условии вместе с джойнами ?

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

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

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

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

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

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

Код: 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
Не видит поле после перехода с 2.5 на 3 FB
    #39542338
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
13 сообщений из 13, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Не видит поле после перехода с 2.5 на 3 FB
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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