Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Связать функцию с таблицей / 10 сообщений из 10, страница 1 из 1
08.08.2021, 15:13
    #40089441
Cobalt747
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связать функцию с таблицей
PG 9.6

Есть таблица персонажей heroes
есть связанные с ними таблицы с данными.

Я написал функцию, которая возвращает необходимы мне данные по персонажу
но не понимаю как связать их чтобы не было null-данных
получил такой вот запрос:
Код: plsql
1.
2.
3.
select g.* 
from heroes h, getherodata(h.id) g
order by g.name



Как сделать Join функции к таблице?
...
Рейтинг: 0 / 0
08.08.2021, 17:18
    #40089480
Связать функцию с таблицей
FROM heroes h
JOIN hero_data g ON g.hero_id = h.id

все строки с NULL в id обеих таблиц пролетят мимо
...
Рейтинг: 0 / 0
08.08.2021, 20:42
    #40089543
Cobalt747
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связать функцию с таблицей
бабушкин зайчик,

Это было бы здорово, если б я не получил ошибку
"pgAdmin 4"ERROR: ОШИБКА: отношение "getherodata" не существует
getherodata у меня - функция.
Может, подскажете, что мне поменять?
Я предполагал сделать функцию, которая по заданному ID вернет необходимый набор полей

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE OR REPLACE FUNCTION public.getherodata(
	aheroid integer,
	OUT name character varying, OUT atk integer, OUT def integer, OUT hp integer, OUT speed integer, OUT critchance integer, OUT critdmg integer, OUT eff integer, OUT res integer, OUT dual integer)
    RETURNS record
    LANGUAGE 'plpgsql'
    COST 100
    VOLATILE PARALLEL UNSAFE
AS $BODY$
...
...
Рейтинг: 0 / 0
08.08.2021, 20:51
    #40089544
Связать функцию с таблицей
...
Рейтинг: 0 / 0
09.08.2021, 14:10
    #40089698
big-trot
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связать функцию с таблицей
Cobalt747
Как сделать Join функции к таблице?


Так вы это сделали.

Вы хотите в результате видеть только тех персонажей, у которых есть дополнительные данные?
...
Рейтинг: 0 / 0
09.08.2021, 23:38
    #40089757
Cobalt747
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связать функцию с таблицей
big-trot,

Да, я хотел сделать left join, но непонятно как это сделать
Те способы, что я нашел на StackOverflow, тоже не дают результата без строк с null
...
Рейтинг: 0 / 0
10.08.2021, 00:00
    #40089760
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связать функцию с таблицей
Cobalt747
big-trot,

Да, я хотел сделать left join, но непонятно как это сделать
Те способы, что я нашел на StackOverflow, тоже не дают результата без строк с null


Эм...:


Код: sql
1.
2.
3.
select (getherodata(h.id)).* 
from heroes h
order by name



если конечно у вас getherodata что то разумное по структуре возвращает.



--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
10.08.2021, 12:09
    #40089823
Cobalt747
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связать функцию с таблицей
Maxim Boguk,

Ну, заголовок функции я привел в первом сообщении, при выборке одной только этой функции с параметром, возвращает данные

Увы, все равно возвращает пустые строки:
https://i.imgur.com/nTaZ6xO.png
...
Рейтинг: 0 / 0
10.08.2021, 12:25
    #40089826
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связать функцию с таблицей
Cobalt747
Maxim Boguk,

Ну, заголовок функции я привел в первом сообщении, при выборке одной только этой функции с параметром, возвращает данные

Увы, все равно возвращает пустые строки:
https://i.imgur.com/nTaZ6xO.png


Вы сами написали что хотели "left join" естественно он будет nulls возвращать.
авторДа, я хотел сделать left join, но непонятно как это сделать


тогда например:
Код: sql
1.
2.
3.
select * from (select (getherodata(h.id)).* from heroes h) as _t
where name IS NOT NULL
order by name



--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
10.08.2021, 14:46
    #40089870
Cobalt747
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связать функцию с таблицей
Maxim Boguk,

Прошу прощения, коcяк был у меня в функции, вместо left join, я сделал inner join, и из-за этого она возвращала для некоторых записей null
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Связать функцию с таблицей / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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