powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Использование псевдонима в запросе?
9 сообщений из 9, страница 1 из 1
Использование псевдонима в запросе?
    #32754904
Alex2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет. У меня вот какой вопрос: Есть запрос
Код: plaintext
1.
2.
select malias from show_mails( 1 ) 
as (MID int4, UID int4, MAlias str_50, MDefault int2)
функция написана, типы правильные и все работает. Когда я пытаюсь "переименовать" show_mails работать перестает. Запрос выглядит так:
Код: plaintext
1.
2.
select sm.malias from show_mails( 1 ) as sm
as (MID int4, UID int4, MAlias str_50, MDefault int2)
Добавление sm к описанию типов ни к чему не приводит. Подскажите плиз каков синтаксис в данном случае. Понимаю, что в данном случае переименование не целесообразно, но на самом деле у меня запрос неколько сложнее.
И вопрос номер два. Если я к данному запросу буду джойнить поля из другой функции где мне описывать типы возвращаемых ею значений
Код: plaintext
1.
2.
3.
select sm.malias, st.tname from show_mails( 1 ) as sm
as (MID int4, UID int4, MAlias str_50, MDefault int2)
join show_tariffs st on sm.uid = st.uid
И последнее, если есть у кого-нить ссылочка, где можно почитать про подобные вопросы, можно на англицком, буду очень признателен.
Заранее всем спасибо!
...
Рейтинг: 0 / 0
Использование псевдонима в запросе?
    #32754973
Фотография Niemi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то я не встречал использования такой конструкции.
Обычно есть типа:
Код: plaintext
SELCT name1 as Imja1, name2 as "Imja nomer 2" FROM tablename
Можно ли узнать источник, где описаны эти примеры?
Alex2005select malias from show_mails(1)
as (MID int4, UID int4, MAlias str_50, MDefault int2)
...
Рейтинг: 0 / 0
Использование псевдонима в запросе?
    #32755027
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тест:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE OR REPLACE FUNCTION public.test_records()
  RETURNS SETOF record AS
'
SELECT *
FROM test;
'
  LANGUAGE 'sql' STABLE;


SELECT * FROM (SELECT * FROM  test_records() AS (id int4 ,
  name varchar( 64 ) )) as q ;
...
Рейтинг: 0 / 0
Использование псевдонима в запросе?
    #32755101
Alex2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NiemiЧто-то я не встречал использования такой конструкции.
Обычно есть типа:
Код: plaintext
SELCT name1 as Imja1, name2 as "Imja nomer 2" FROM tablename
Можно ли узнать источник, где описаны эти примеры?
Alex2005select malias from show_mails(1)
as (MID int4, UID int4, MAlias str_50, MDefault int2)
А как же вы тогда вызываете select из функции. Если select из таблицы, то можно типы не указывать, а если из функции, то надо указывать...
И на счет псевдонимов. Вы используете переименование возвращаемых столбцов, а мне надо переименовать функции (или могут быть и таблицы) к которым я обращаюсь..
В интербейзе я например писал так:
Код: plaintext
1.
select s1.id, s2.name from users s1, manager s2...
...
Рейтинг: 0 / 0
Использование псевдонима в запросе?
    #32755144
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо заставили влезть в хелп

Код: plaintext
1.
SELECT * FROM  test_records() AS q (id int4 ,
  name varchar( 64 ) )   ;

where from_item can be one of:

[ ONLY ] table_name [ * ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ]
( select ) [ AS ] alias [ ( column_alias [, ...] ) ]
function_name ( [ argument [, ...] ] ) [ AS ] alias [ ( column_alias [, ...] | column_definition [, ...] ) ] function_name ( [ argument [, ...] ] ) AS ( column_definition [, ...] )
from_item [ NATURAL ] join_type from_item [ ON join_condition | USING ( join_column [, ...] ) ]
Description


2 раза AS - это лишнее
...
Рейтинг: 0 / 0
Использование псевдонима в запросе?
    #32755222
Alex2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. Вот все и заработало. С join все аналогично...
Код: plaintext
1.
2.
3.
4.
select su.uname, st1.tname
from show_users() as su (uid int4, uname str_100)
left join show_tariffs() as st1 (tid int4, tname varchar)
where su.uid =  1 
...
Рейтинг: 0 / 0
Использование псевдонима в запросе?
    #32755446
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
left join БЕЗ ON ???
очень странно

Но благодаря тому, что полез проверять странность, нашел "фичу" в 7.3. :

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT t.id AS tid, q.id AS  qid 
FROM test AS t LEFT JOIN test AS q
ON t.id= 1 


tid	qid
 1 	 1 
 1 	 2 
 1 	 3 
 1 	 4 
 2 	
 3 	
 4 	
Долго думал. Ничего не понял. Наверное я плохо понимаю Left Join или ON
...
Рейтинг: 0 / 0
Использование псевдонима в запросе?
    #32756013
фффф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
4321
нашел "фичу" в 7.3. :

Это абсолютно нормальное поведение left join: выполнилось условие - строка из правой таблицы привязалась, а то что условие на столбец левой таблицы - неважно. Условие-то на join, а не на where.
...
Рейтинг: 0 / 0
Использование псевдонима в запросе?
    #32756641
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фффф 4321
нашел "фичу" в 7.3. :

Это абсолютно нормальное поведение left join: выполнилось условие - строка из правой таблицы привязалась, а то что условие на столбец левой таблицы - неважно. Условие-то на join, а не на where.

Пасиб. Размыслив я уже пришел к этому выводу
Left => _все_ из левой + те из правой, для которых условие - TRUE. Но фахт на первый взгляд неожиданный.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Использование псевдонима в запросе?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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