powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / derived table и "автоматические" заголовки столбцов
25 сообщений из 28, страница 1 из 2
derived table и "автоматические" заголовки столбцов
    #39871880
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
select b, c + 50 from t where a = 2 and b = 8 



вот так у обоих столбцов названия есть

Код: sql
1.
select * from (select b, c + 50 from t where a = 2 and b = 8) as t2



А вот так - уже внезапно нету.

Почему, зачем?

Навеяно:
https://dbfiddle.uk/?rdbms=firebird_3.0&fiddle=a1d384c4c2775c35da08f71d593b22ad

https://stackoverflow.com/questions/58226348/firebird-add-constant-to-returned-column-in-the-query/58235052
...
Рейтинг: 0 / 0
derived table и "автоматические" заголовки столбцов
    #39871893
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

А что значит есть, и что значит нет?
Самому бы было приятно, чтобы юзеры вот именно такой багрепорт прислали, чтобы лазить по ссылкам добывать информацию?
...
Рейтинг: 0 / 0
derived table и "автоматические" заголовки столбцов
    #39871896
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad F,

это не баг даже.

Arioch,

в первом примере столбцу далось автоматическое название. Собственно сервер свою работу сделал и ему плевать, пусть клиент мучается теперь с ним. Запрос верхнего уровня

Во-втором с автоматическим названием потенциально мучится серверу, мало-ли по нему фильтр потребуется поставить, то есть сервак просто не думает как окончательно будет использоваться dt, но видит косячный столбец, надо ругнуться.

Не знаю почему такие вопросы вообще возникают. Вроде всё интуитивно понятно
...
Рейтинг: 0 / 0
derived table и "автоматические" заголовки столбцов
    #39871900
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

А какая разница, пусть как минимум учится оформлять.
...
Рейтинг: 0 / 0
derived table и "автоматические" заголовки столбцов
    #39872473
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad F, если ты не знаешь, что такое "есть" и что такое "нет", то объяснять тебе это надо с картинками, как в детском саду. Я - пас.

И не путай трекер с форумом, хотя если ты "нет" от "есть" не отличаешь, то это наверное завышенное требование.


Симонов Денис, нет, не понятно. Принципиальной разницы между запросами нет.

> мало-ли по нему фильтр потребуется поставить

1. и где там фильтр в запросе ? Этак можно и деление на не-константу запретить превентивно, а то "мало ли потребуется" однажды на ноль поделить.

2. а что, фильтр возможен только во втором запросе быть, в первом запросе WHERE вставить нельзя?
...
Рейтинг: 0 / 0
derived table и "автоматические" заголовки столбцов
    #39872480
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

успокойся уже. Запросы в FB не на столько глубоко анализируются. Принципиально это возможно, и даже сделать к нему query rewrite, но пока нет. Тут более простая схема засунул запрос в derived table, значит все поля должны быть с однозначными именами. Требовать более глубокого анализа смысла нет, если только реально не будут делать query rewrite
...
Рейтинг: 0 / 0
derived table и "автоматические" заголовки столбцов
    #39872511
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

в каком смысле "однозначными" и в каком они сейчас "неоднозначные" ?

не нужно там query rewrite, нyжно просто "alias" скопировать на уровень вверх
...
Рейтинг: 0 / 0
derived table и "автоматические" заголовки столбцов
    #39872514
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

в таком. Если я напишу

Код: sql
1.
select c + 50, с + 50 form t



какие автоматические алиасы будут? Не надо запихивать искусственный интеллект куда не требуется прогибаться под нубов.
...
Рейтинг: 0 / 0
derived table и "автоматические" заголовки столбцов
    #39872516
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какие-нибудь да будут.

И эта "проблема" - она одинаковая для обоих запросов, что с DT что без DT
...
Рейтинг: 0 / 0
derived table и "автоматические" заголовки столбцов
    #39872519
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

да, да. Добавляем неочевидное поведение. Сначала позволяем твою хрень, потом можно писать вот так

Код: sql
1.
2.
3.
select * 
from (select b, c + 50 from t where a = 2 and b = 8) as t2
where "ADD" = 58



Да именно такой алиас выдан автоматически!
Ну его нах
...
Рейтинг: 0 / 0
derived table и "автоматические" заголовки столбцов
    #39872561
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисможно писать вот так

а это уже твои домыслы, и они противоречат моим

Ariochа что, фильтр возможен только во втором запросе быть, в первом запросе WHERE вставить нельзя?

но даже если твои домыслы верны, то

AriochЭтак можно и деление на не-константу запретить превентивно, а то "мало ли потребуется" однажды на ноль поделить.
...
Рейтинг: 0 / 0
derived table и "автоматические" заголовки столбцов
    #39872565
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

в твоей же логике, почему здесь можно, а здесь нельзя. Алиас же наружу пробросили
...
Рейтинг: 0 / 0
derived table и "автоматические" заголовки столбцов
    #39872585
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

меня вполне устроит, чтобы "нигде нельзя"

ну или чтобы "везде можно", тоже устроит, хотя и меньше

я против "тут читаем, тут не читаем, тут рыбу заворачивали"
...
Рейтинг: 0 / 0
derived table и "автоматические" заголовки столбцов
    #39872607
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

Насчёт нигде нельзя в другие СУБД посмотри. Такой вопрос мог возникнуть только у тех кто вообще никогда не пользовался ни одной СУБД. Все остальные привыкли уже. Поведение примерно у всех одинаковое.
...
Рейтинг: 0 / 0
derived table и "автоматические" заголовки столбцов
    #39872868
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Любители "*" должны страдать.
...
Рейтинг: 0 / 0
derived table и "автоматические" заголовки столбцов
    #39873086
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevsky,

кстати, в одной недавней базе. В процедуре запрос select * from ... into ....
С момента создания этой процедуры в таблицу добавилось 3 столбца.
Собственно, процедура работает, но не перекомпилируется.
А могла бы, если вместо * столбцы были бы явно указаны.
...
Рейтинг: 0 / 0
derived table и "автоматические" заголовки столбцов
    #39873089
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyЛюбители "*" должны страдать.
А вот есть запрос
Код: sql
1.
2.
3.
4.
5.
6.
select a, (
          select x from z
          ... много букв
          where ...
           ) x
  from b


- на выходе два столбца: а и x
Если от подзапроса нужно два поля, (x и y), то вот так нельзя:
Код: sql
1.
2.
3.
4.
5.
select a, (
          select x, y from z
          ... очень много букв
           ) x y
  from b


- нужно подзапрос фактически повторять:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select a, (
          select x from z
          ... очень много букв
           ) x,
          (
          select y from z
          ... очень много букв, еще раз
           ) y
  from b


- или как?
В fb 2.0 вообще можно два поля из подзапроса вытянуть?
...
Рейтинг: 0 / 0
derived table и "автоматические" заголовки столбцов
    #39873090
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёё
Ivan_PisarevskyЛюбители "*" должны страдать.

А вот есть запрос
Код: sql
1.
2.
3.
4.
5.
6.
select a, (
          select x from z
          ... много букв
          where ...
           ) x
  from b


- на выходе два столбца: а и x
Если от подзапроса нужно два поля, (x и y), то вот так нельзя:
Код: sql
1.
2.
3.
4.
5.
select a, (
          select x, y from z
          ... очень много букв
           ) x y
  from b


- нужно подзапрос фактически повторять:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select a, (
          select x from z
          ... очень много букв
           ) x,
          (
          select y from z
          ... очень много букв, еще раз
           ) y
  from b


- или как?
В fb 2.0 вообще можно два поля из подзапроса вытянуть?

Вот так можно:

Код: sql
1.
2.
3.
4.
5.
select t1.a, t2.* 
  from b t1, (
          select x, y from z
          ... очень много букв
           ) t2 



Например
Код: sql
1.
2.
3.
select T1.RDB$SECURITY_CLASS a, T2.*
from RDB$DATABASE T1, (select RDB$DESCRIPTION x, RDB$RELATION_ID y
                       from RDB$DATABASE) T2  


Как тут без "*" ?
...
Рейтинг: 0 / 0
derived table и "автоматические" заголовки столбцов
    #39873093
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёё...

Вот так можно:

Код: sql
1.
2.
3.
4.
5.
select t1.a, t2.* 
  from b t1, (
          select x, y from z
          ... очень много букв
           ) t2 


...
- попробовал - оказывается, в таком варианте, в "подзапросе" t2 нельзя указывать ничего, относящееся не к контексту t1.
Т.е., вот так - можно:
Код: sql
1.
2.
3.
4.
select T1.RDB$SECURITY_CLASS A, T2.*
from RDB$DATABASE T1, (select R.RDB$DESCRIPTION X, R.RDB$RELATION_ID Y
                       from RDB$DATABASE R
                       ) T2


...а вот так - уже нельзя:
Код: sql
1.
2.
3.
4.
select T1.RDB$SECURITY_CLASS A, T2.*
from RDB$DATABASE T1, (select R.RDB$DESCRIPTION X, R.RDB$RELATION_ID Y
                       from RDB$DATABASE R
                       where R.RDB$RELATION_ID = T1.RDB$RELATION_ID) T2


Column unknown.
T1.RDB$RELATION_ID.

ЗЫ: пример я у MS SQL нашел... а у нас - не работает... :(
...
Рейтинг: 0 / 0
derived table и "автоматические" заголовки столбцов
    #39873103
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёё,

и не должно. Ждём LATERAL
...
Рейтинг: 0 / 0
derived table и "автоматические" заголовки столбцов
    #39873107
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

ну, почти все можно обыграть с момента появления execute block, но ведь хочется "чистым sql". :)
...
Рейтинг: 0 / 0
derived table и "автоматические" заголовки столбцов
    #39873108
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис...Ждём LATERAL
А это намечается? Даже в FB 4 нет...
...
Рейтинг: 0 / 0
derived table и "автоматические" заголовки столбцов
    #39873111
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёё,

согласно стандарту LATERAL позволяет вносить в derived table чужой контекст. Это как раз и будет "чистым SQL"

И кстати позволить делать реально полезный штуки. Твой пример не удачный ибо всё можно сделать и без LATERAL.
Вот пример вытащить несколько полей из сущности на последнюю дату

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT T1.col_1, T2.col_1, T2.col_2
FROM T1 CROSS JOIN LATERAL (
  SELECT T2.col_1, T2_col2
  FROM T2
  WHERE T2.id_t1 = T1.id
  ORDER BY T2.STARTDATE DESC
  FETCH FIRST ROW ONLY
)
...
Рейтинг: 0 / 0
derived table и "автоматические" заголовки столбцов
    #39873112
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёё,

у ДЕ есть наработки по LATERAL и ранее этот тикет планировался на 4.0.
Но сейчас сняли, не понятно будет это или отложат до 5.0.
...
Рейтинг: 0 / 0
derived table и "автоматические" заголовки столбцов
    #39873173
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисёёёёё,

у ДЕ есть наработки по LATERAL и ранее этот тикет планировался на 4.0.
Но сейчас сняли, не понятно будет это или отложат до 5.0.

А я очень ждал . Реально полезная штука!
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / derived table и "автоматические" заголовки столбцов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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