我正在尝试完成数据库最终项目,我需要为Web论坛创建数据库。只是数据库工作,而不是PHP / HTML /等。
对于这个例子,我们很难将用户编码到代码中,因为我们没有使用变量。对于我的例子,我将使用User_ID 2。 我坚持要求。我需要创建一个列出用户个人资料及其兴趣的视图。因此,字段名称,如Username,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)
创建表用户
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 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 :(得分:0)
尝试查看http://www.oracle-developer.net/display.php?id=515处的listagg()函数。您将需要为两个users.user_id = interests.user_id加入兴趣表(如果您想要显示用户即使他是“不感兴趣”,也可以加入左连接)和interests.category_id = categories.category_id。