2015-07-16 6 views
1

У меня есть пять запросов, и каждый из них вернет мне один вывод с несколькими столбцами. Я хочу написать функцию, которая будет содержать все эти запросы.
Может ли кто-нибудь помочь?Как присоединиться к нескольким несвязанным таблицам

запрос 1:

Select Col1 as X from Table1; 

запрос 2:

Select Col3 as Y from Table2; 

С функции Я хочу, чтобы получить таблицу, которая будет иметь столбцы X, Y

Как клуб эти запросы под одной функцией?

+0

вы также должны указать, что вы пробовали до сих пор. Существует ли какая-либо связь между таблицей 1 и таблицей 2? – Spidey

+0

Я отредактировал заголовок вопроса, чтобы отразить главный вопрос, как я его понял. Если я неправильно понял вопрос, пожалуйста, отредактируйте его дальше. –

+0

Добро пожаловать в SQL, RTFM. –

ответ

0

Если между двумя таблицами существует связь, попробуйте использовать join. Возможно, здесь может быть просто inner join?

select Col1 as X from Table1 
join 
on Table1.Col1_name = Table2.col3_name 
0

Использование оператора UNION:

SELECT 
    column_1 
FROM 
    tbl_name_1 
UNION ALL 
SELECT 
    column_1 
FROM 
    tbl_name_2; 
+1

Вероятно, «UNION ALL» было бы лучше. –

1

Добавить в ROW_NUMBER() к каждому из запросов и присоединиться к ним по номеру строки. В зависимости от количества строк, возвращаемых каждым запросом, вы должны присоединиться к inner, left или full присоединиться.

Пример ниже предполагает, что два запроса возвращают одинаковое количество строк.

WITH 
CTE1 
AS 
(
    SELECT Col1 as X, ROW_NUMBER() OVER(ORDER BY Col1) AS rn 
    FROM Table1 
) 
,CTE2 
AS 
(
    SELECT Col3 as Y, ROW_NUMBER() OVER(ORDER BY Col3) AS rn 
    FROM Table2 
) 
SELECT 
    CTE1.X, CTE2.Y 
FROM 
    CTE1 
    INNER JOIN CTE2 ON CTE1.rn = CTE2.rn 
+0

CREATE OR REPLACE FUNCTION YTD (варьируя MMYY характер, MMYY1 характер изменяющийся) ВОЗВРАТ ТАБЛИЦА (имя персонажа разной, отношение BIGINT, ratio1 BigInt) AS $ BODY $ НАЧАТЬ RETURN запроса SELECT col1 как имя от t1, Select col2 в соотношении от t2, Выбор col3 как ratio1 от t3 END $ BODY $ ЯЗЫК plpgsql ЛЕТУЧИЕ COST 100 РЯДЫ 1000; ALTER FUNCTION ydt2 (символ MMYY меняется, символ MMYY1 меняется) ВЛАДЕЛЬЦЕВ В postgres; Тот же параметр будет передан в каждом sql – user19120

Смежные вопросы