powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Хочу странного и вопрошаю к разработчикам
27 сообщений из 27, показаны все 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
Хочу странного и вопрошаю к разработчикам
    #39401195
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrне писать ON вообще, а писать NATURAL JOIN
Это будет забавный аттракцион если совпадают имена неправильных полей...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Хочу странного и вопрошаю к разработчикам
    #39401213
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovdimitrне писать ON вообще, а писать NATURAL JOIN
Это будет забавный аттракцион если совпадают имена неправильных полей...
пардон за вечерний тормоз, имел ввиду CROSS JOIN. Но это только если не нужен LEFT по семантике (а не из-за форсирования порядка соединения).
...
Рейтинг: 0 / 0
27 сообщений из 27, показаны все 2 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Хочу странного и вопрошаю к разработчикам
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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