0
嗨我已經問了一個問題related to this already,但有第二個問題。我評論說,我爲每支球隊和每支球隊創建了一個嵌套的表格,而不是單獨的行。方法函數沒有從單行獲取值(嵌套表)
我想爲一個特定的GameId而不是表中的所有行運行該方法..這次我包含了我的Game_Type對象,雖然我認爲上次沒有必要。
CREATE TYPE Game_Type AS OBJECT
(GameId NUMBER)
/
CREATE TABLE Game_Table of Game_Type
/
INSERT INTO Game_Table
VALUES (1)
/
INSERT INTO Game_Table
VALUES (2)
/
CREATE TYPE Team_Type AS OBJECT
(TeamPlayed VARCHAR2(30),
TeamScore NUMBER(1))
/
CREATE TYPE TeamsPlayed_Table as TABLE OF Team_Type
/
CREATE OR REPLACE TYPE After_Team AS OBJECT
(GameRef REF Game_Type,
GamePlayed Teamsplayed_Table,
MAP MEMBER FUNCTION team_rating RETURN NUMBER)
/
CREATE TABLE Team_Table of After_Team NESTED TABLE GamePlayed STORE AS
GamePlayed_Nested
/
CREATE OR REPLACE TYPE BODY After_Team
AS
MAP MEMBER FUNCTION team_rating
RETURN NUMBER
IS
avg_score NUMBER;
BEGIN
SELECT AVG(c.TeamScore)
INTO avg_score
FROM Team_Table d, table(d.GamePlayed) c;
RETURN avg_score;
END;
END;
/
INSERT INTO Team_Table
VALUES((SELECT REF(a) FROM Game_Table a WHERE a.gameid = 1),
(TeamsPlayed_Table(Team_Type('Team A', 1), Team_Type('Team B', 3))))
/
INSERT INTO Team_Table
VALUES((SELECT REF(a) FROM Game_Table a WHERE a.gameid = 2),
(TeamsPlayed_Table(Team_Type('Team C', 5), Team_Type('Team D', 9))))
/
現在,當我執行我的方法:
SELECT t.team_rating()
from Team_Table t
where t.GameRef.GameId = 1
它返回平均值爲所有的值,而不是僅僅遊戲1 ..
參見[我的回答(https://stackoverflow.com/a/46642516/1509264)您最初的問題 - 你需要'team_rating'函數中的'WHERE'子句。我已經說過的東西從你接受的答案中缺失。 – MT0
已經給你信任其他問題的答案。 – lesovren