powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Связать функцию с таблицей
10 сообщений из 10, страница 1 из 1
Связать функцию с таблицей
    #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
Связать функцию с таблицей
    #40089480
FROM heroes h
JOIN hero_data g ON g.hero_id = h.id

все строки с NULL в id обеих таблиц пролетят мимо
...
Рейтинг: 0 / 0
Связать функцию с таблицей
    #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
Связать функцию с таблицей
    #40089544
...
Рейтинг: 0 / 0
Связать функцию с таблицей
    #40089698
big-trot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cobalt747
Как сделать Join функции к таблице?


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

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

Да, я хотел сделать left join, но непонятно как это сделать
Те способы, что я нашел на StackOverflow, тоже не дают результата без строк с null
...
Рейтинг: 0 / 0
Связать функцию с таблицей
    #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
Связать функцию с таблицей
    #40089823
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Boguk,

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

Увы, все равно возвращает пустые строки:
https://i.imgur.com/nTaZ6xO.png
...
Рейтинг: 0 / 0
Связать функцию с таблицей
    #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
Связать функцию с таблицей
    #40089870
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Boguk,

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


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