powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Хочу странного и вопрошаю к разработчикам
25 сообщений из 27, страница 1 из 2
Хочу странного и вопрошаю к разработчикам
    #39400910
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Порой для выборки не хватает возможности связывания таблиц и селективных ХП по следующему принципу:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
SELECT ...
  FROM <table1_name> t1
    INNER JOIN <table2_name> t2 ON t2.<fk_field> = t1.<pk_field>
    {INNER | LEFT} JOIN <sp_name> sp
      ON PARAMETER sp.<input_param1_name> = t1.<some_field>
        AND PARAMETER sp.<input_param2_name> = t2.<some_field>
        AND sp.<result_field> = <some_table>.<some_field>

(INNER JOIN <table2_name> здесь лишь для большей наглядности примера)
Таким образом, чтобы для каждого фетча соединения таблиц <table1_name> и <table2_name> вызывалась селективная ХП с входными параметрами в качестве полей соединения типа:
Код: plsql
1.
SELECT * FROM <sp_name>(t1.<some_field>, t2.<some_field>)

Конечно, подобную задачу можно решить и другими путями, но хотелось бы иметь и такую фичу.
Нельзя ли замутить подобное в "четвёрке"?
...
Рейтинг: 0 / 0
Хочу странного и вопрошаю к разработчикам
    #39400920
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Rdb Dev!
You wrote on 8 февраля 2017 г. 14:36:23:

Rdb Dev> Нельзя ли замутить подобное в "четвёрке"?а деньги?

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Хочу странного и вопрошаю к разработчикам
    #39400927
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

эээ, че-то я не понимаю. В процедуру в качестве параметров передается не абстракция, а либо параметр, либо константа, либо значения столбцов.

вместо вот этого
Код: sql
1.
2.
3.
JOIN <sp_name> sp
      ON PARAMETER sp.<input_param1_name> = t1.<some_field>
        AND PARAMETER sp.<input_param2_name> = t2.<some_field>



нельзя написать
Код: sql
1.
JOIN <sp_name> sp (t1.<some_field>, t2.<some_field>)



?
Исходное пожелание выглядит как бред какой-то - на примере паскаля
procedure a (var b integer; var c: integer);

это типа как перед вызовом процедуры a написать
Код: pascal
1.
2.
if var1 = b then
a (var1)


?

кроме того, селективная процедура в sql выглядит как таблица, следовательно, объединение можно делать только с ВЫХОДНЫМИ параметрами процедуры.
...
Рейтинг: 0 / 0
Хочу странного и вопрошаю к разработчикам
    #39400938
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

нельзя ибо бред. Всем хватает возможности передачи в качестве аргумента ХП, да и соединения с результатом ХП никто не отменял.

Код: sql
1.
2.
3.
4.
5.
SELECT ...
  FROM <table1_name> t1
    JOIN <table2_name> t2 ON t2.<fk_field> = t1.<pk_field>
    [{LEFT [OUTER] | INNER}] JOIN <sp_name>(t1.<some_field>, t2.<some_field>) sp
      ON sp.<result_field> = <some_table>.<some_field>



чем не устраивает?
...
Рейтинг: 0 / 0
Хочу странного и вопрошаю к разработчикам
    #39400943
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvнельзя написать
Код: sql
1.
JOIN <sp_name> sp (t1.<some_field>, t2.<some_field>)

Не знаю, как в "тройке", но в 2.5.7 это не работает. Если будет работать в "четвёрке", то и так тоже сойдет.
...
Рейтинг: 0 / 0
Хочу странного и вопрошаю к разработчикам
    #39400946
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ми пардон! Работает. Вопрос снят. :)
...
Рейтинг: 0 / 0
Хочу странного и вопрошаю к разработчикам
    #39400951
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

в тройке работает даже лучше, ибо нет ограничения на обязательность LEFT JOIN

З.Ы. В следующий раз прежде чем предлагать фичу посмотри на то, что уже имеется в арсенале, мало ли тебе подходит.
...
Рейтинг: 0 / 0
Хочу странного и вопрошаю к разработчикам
    #39400953
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда такой еще вопрос - кто что пишет после "ON"? Какие рекомендации?
...
Рейтинг: 0 / 0
Хочу странного и вопрошаю к разработчикам
    #39400958
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

если с выходным результатом ХП не надо соединять, то обычно что-то типа 1=1, в тройке можно просто написать ON TRUE.
Если надо, то пишут нормальное условие соединения.
...
Рейтинг: 0 / 0
Хочу странного и вопрошаю к разработчикам
    #39400963
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисЗ.Ы. В следующий раз прежде чем предлагать фичу посмотри на то, что уже имеется в арсенале, мало ли тебе подходит.Стараюсь так и делать, но не всегда получается. При одной из проверок у меня ругнулось на обычную селективную ХП:

"The cursor identified in the UPDATE or DELETE statement is not positiooned on a row. no current record for fetch operation."

После чего я расстроился и опрометчиво выплеснул своё расстройство на поля форума.
...
Рейтинг: 0 / 0
Хочу странного и вопрошаю к разработчикам
    #39400965
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисrdb_dev, если с выходным результатом ХП не надо соединять, то обычно что-то типа 1=1Я захотел выпендриться и написал NULL IS NULL. И вот результат...
...
Рейтинг: 0 / 0
Хочу странного и вопрошаю к разработчикам
    #39400968
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
точнее ON Cast(NULL AS INTEGER) IS NULL
...
Рейтинг: 0 / 0
Хочу странного и вопрошаю к разработчикам
    #39400970
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devПосле чего я расстроился и опрометчиво выплеснул своё расстройство на поля форума.
Придется многораз тебя казнить.
Это серверное дело -
Ты улавливаешь нить?..
...
Рейтинг: 0 / 0
Хочу странного и вопрошаю к разработчикам
    #39400978
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev"The cursor identified in the UPDATE or DELETE statement is not positiooned on a row. no current record for fetch operation."

ну тогда сначала узнай почему 2.5 требовал обязательно LEFT JOIN в случае передачи в качестве параметров полей таблиц из внешнего потока. В 3.0 с этим проще.

авторON Cast(NULL AS INTEGER) IS NULL

и как люди только не извратятся. Да туда можно любое истинное выражение записать, можешь хоть
5000 * (10 - 8) = 100 * 100 или ещё посложнее, но обычно стараются что-то простое и покороче.
...
Рейтинг: 0 / 0
Хочу странного и вопрошаю к разработчикам
    #39400983
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисну тогда сначала узнай почему 2.5 требовал обязательно LEFT JOIN в случае передачи в качестве параметров полей таблиц из внешнего потока. В 3.0 с этим проще.Ага, понятно! Доступен только LEFT JOIN. Спасибо!
...
Рейтинг: 0 / 0
Хочу странного и вопрошаю к разработчикам
    #39400993
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просите LATERAL JOIN.
В трекере он вроде даже есть.
...
Рейтинг: 0 / 0
Хочу странного и вопрошаю к разработчикам
    #39400997
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

CORE-3435

я уже голосовал. Правда он немного не для того что ТС просит, но штука полезная.
...
Рейтинг: 0 / 0
Хочу странного и вопрошаю к разработчикам
    #39401000
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисПравда он немного не для того что ТС проситРазве ?

rdb_devТаким образом, чтобы для каждого фетча соединения таблиц <table1_name> и <table2_name> вызывалась селективная ХП с входными параметрами в качестве полей соединения типа:
Код: plsql
1.
SELECT * FROM <sp_name>(t1.<some_field>, t2.<some_field>)
...
Рейтинг: 0 / 0
Хочу странного и вопрошаю к разработчикам
    #39401003
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Симонов Денис!
You wrote on 8 февраля 2017 г. 15:27:50:

Симонов Денис> CORE-3435поставил плюсик.
хотя (имхо), приоритет Major излишен.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Хочу странного и вопрошаю к разработчикам
    #39401023
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

JOIN и LEFT JOIN и так с хранимками хорошо работает, а вот такое было бы неплохо

Код: sql
1.
2.
3.
4.
5.
SELECT
  t1.field1,
  (select t2.field1 from t2 where t2.field2 = t1.field2 order by t2.bydate desc fetch first only) as t2_field1,
  (select t2.bydare from t2 where t2.field2 = t1.field2 order by t2.bydate desc fetch first only) as t2_bydate
from t1



заменить на

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT
  t1.field1,
  t.field1 as t2_field1,
  t.bydate as t2_bydate
from t1
lateral join (select t2.field1, t2.bydate 
              from t2 
              where t2.field2 = t1.field2 
              order by t2.bydate desc 
              fetch first only) t
...
Рейтинг: 0 / 0
Хочу странного и вопрошаю к разработчикам
    #39401044
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

о чём спор ?
Что LATERAL не о том, что просил ТС,
или о том, что LATERAL можно использовать и в других 100500 случаях ? :)
...
Рейтинг: 0 / 0
Хочу странного и вопрошаю к разработчикам
    #39401061
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

То что хочет ТС работает и без LATERAL по крайней мере в ФБ, поэтому LATERAL хочется немного по другим причинам. Хотя в других СУБД LATERAL часто используется именно для вызовов ХП в качестве входных параметров которой используются значения из внешнего потока.
...
Рейтинг: 0 / 0
Хочу странного и вопрошаю к разработчикам
    #39401084
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийа деньги?"С деньгами" я бы написал: "Требую замутить подобное ... !" :)
...
Рейтинг: 0 / 0
Хочу странного и вопрошаю к разработчикам
    #39401167
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devТогда такой еще вопрос - кто что пишет после "ON"? Какие рекомендации?
не писать ON вообще, а писать NATURAL JOIN
...
Рейтинг: 0 / 0
Хочу странного и вопрошаю к разработчикам
    #39401168
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devя бы написал: "Требую замутить подобное ... !" :)
"я не понимаю как оно работало, работает, или должно работать, но требую замутить..."
я бы сказал, что перед вопросом пить надо меньше, но все же порекомендую немного думать, и представлять механизмы доступа к данным, прежде чем просить какую-то ахинею.
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Хочу странного и вопрошаю к разработчикам
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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