Выбор столбцов из одной таблицы, но предложение WHERE из другой таблицы? - PullRequest
0 голосов
/ 16 октября 2018

Итак, у меня есть 3 таблицы, и мне было предложено указать эти 3 конкретные столбцы в качестве параметров.Мой вопрос заключается в том, смогу ли я найти FirstName и LastName инвестора просто с помощью описания портфеля, или мне также придется присоединиться к столам?

(первый оператор выбора относится к таблице, которую я не перечислил)

Investor 
InvestorNum   FirstName    LastName     Address
-----------    --------     -------     ------   

Portfolio
Port num     Investor Num     Port Description    InvestorNum
---------   -------------     ----------------    ----------

Stock 
Stock Code     Stock Name
----------     ----------


FUNCTION PKG_FN_Q4
(P_Portfolio_Description varchar2, P_Investor_Number number, P_Stock_Name varchar2) 
RETURN varchar2
AS
V_Average_Cost varchar2(50); 
V_Output varchar2(500);
V_Investor_First_Name varchar2(25);
V_Investor_Last_Name varchar2(30);
V_Stock_Name varchar2(50);
V_Portfolio_Desc varchar2(50);

BEGIN 
SELECT TO_CHAR(sum(Quantity*Price_Per_Share)/sum(Quantity))
INTO V_Average_Cost
From Transaction 
Where Portfolio_Description = P_Portfolio_Description AND
  Investor_Number = P_Investor_Number AND
      Stock_Name = P_Stock_Name AND Buy_Sell = 'B'; 

SELECT First_Name, Last_Name
INTO V_Investor_First_Name, V_Investor_Last_Name
From Investor 
Where Portfolio_Description = P_Portfolio_Description 
  AND Portfolio.Investor_Number = Investor.Investor_Number;  

SELECT Stock_Name 
INTO V_Stock_Name
From Stock
Where Stock_Name = P_Stock_Name; 

SELECT Portfolio_Description 
INTO V_Portfolio_Desc
From Portfolio
Where Portfolio_Description = P_Portfolio_Description;

RETURN V_Output = V_Investor_First_Name || V_Investor_Last_Name || 'paid, on average' || 
                    V_Average_Cost || 'for the stock' || V_Stock_Name || 'in the portfolio' || V_Portfolio_Desc;

1 Ответ

0 голосов
/ 16 октября 2018

Просто использование P_Investor_Number должно работать при условии, что Investor_Number является первичным ключом.

SELECT First_Name, Last_Name
INTO V_Investor_First_Name, V_Investor_Last_Name
From Investor 
Where Investor.Investor_Number = P_Investor_Number; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...