2016-04-19 45 views
0

我正在嘗試完成一個數據庫最終項目,我需要爲一個Web論壇創建一個數據庫。只是數據庫工作,而不是PHP/HTML /等。Oracle SQL將另一個表/行的多個值返回到另一個表中的單個字段

對於這個例子,我們將用戶硬編碼到代碼中,因爲我們沒有使用變量。對於我的示例,我將使用User_ID 2. 我被困在需求上。我需要創建一個列出用戶個人資料和興趣的視圖。所以,字段名稱,如用戶名,F_Name,L_Name等 我的問題是,用戶的「興趣」存儲在另一個表中。我需要將主要顯示如下一種觀點:

Users.Username Users.F_Name Users.L_Name Users.Joined (VARCHAR2) Users.Signature Users.Website INTERESTS 

我想它返回如:

"JSmith" "John", "Smith", "1/1/2016", "SigHere", "www.example.com, "Music, Movies, Tech" With the entire list of interests all within one field of the view. 

利息表如下所示:

INTEREST_ID USER_ID CATEGORY_ID 
    1    2  1 
    2    2  2 
    3    2  3 
    4    3  1 
    5    3  2 
    6    4  2 
    7    5  1 
    8    5  2 
    9    5  3 

分類表是:

CATEGORY_ID NAME  DESCRIPTION 
    1   Music   All about them Jamz! 
    2   Electronics Tech Talk 
    3   Movies   The BIG screen 

用戶表:

User_ID  Integer   NOT NULL, 
Username VARCHAR2(60) NOT NULL, 
Password VARCHAR2(60), 
Email  VARCHAR2(255), 
F_Name  VARCHAR2(20) NOT NULL, 
L_Name  VARCHAR2(20) NOT NULL, 
Joined  VARCHAR2(10), 
Level_ID INTEGER   NOT NULL, 
Signature VARCHAR2(255), 
Website  VARCHAR2(60) 

CREATE TABLE用戶

User_ID  Integer   NOT NULL, 
Username VARCHAR2(60) NOT NULL, 
Password VARCHAR2(60), 
Email  VARCHAR2(255), 
F_Name  VARCHAR2(20) NOT NULL, 
L_Name  VARCHAR2(20) NOT NULL, 
Joined  VARCHAR2(10), 
Level_ID INTEGER   NOT NULL, 
Signature VARCHAR2(255), 
Website  VARCHAR2(60) 

我試過這個命令,但它返回時,我試圖SELECT * FROM爲「單行子查詢返回多個行」我明白爲什麼。只是無法弄清楚如何讓它做我想做的事。它甚至有可能嗎?

CREATE or REPLACE VIEW Profile AS 
SELECT Users.Username, Users.F_Name, Users.L_Name, Users.Joined, Users.Website, 
(SELECT UserInterested.Category_ID FROM UserInterested) AS InterestList 
FROM Users 
WHERE Users.User_ID = 2; 

回答

0

試着看看listagg()函數http://www.oracle-developer.net/display.php?id=515。您需要加入兩個用戶的興趣表。user_id = interests.user_id(如果要顯示用戶(即使他「不感興趣」)和interest.category_id = categories.category_id,則爲左連接。

+0

謝謝!我最終沒有爲該項目使用子查詢。該視圖重複了用戶名一堆,但教練說這很好(程序員會剝奪它)。然而,它一直在竊聽我,我想弄明白。我會給它一個鏡頭,看看會發生什麼!謝謝! –

相關問題