2016-04-19 16 views
0

Webフォーラムのデータベースを作成する必要があるデータベースの最終プロジェクトを完了しようとしています。ちょうどDBの仕事ではなく、PHP/HTML/etc。他のテーブル/行から複数​​の値を別のテーブルの単一フィールドに返すためのOracle SQL

この例では、変数を使用していないため、ユーザーをコードにハードコーディングしています。私の例では、User_ID 2を使用します。 要件に固執しています。私は、ユーザーのプロフィールと興味を一覧表示するビューを作成する必要があります。だから、フィールド名は、Username、F_Name、L_Nameなど 私の問題は、ユーザーのための "興味"は別のテーブルに格納されています。私は基本的に以下のように表示されるビューが必要になります。

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

私はそれのような返却したいと思います:

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 

カテゴリーを次のように関心表が見えます

"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. 

表は:

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

Usersテーブルがある:

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) 

が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) 

を作成するのではなく、それは私がそれから*を選択しようとしたとき、「単一行のサブクエリが複数行を返す」返され、私はそれを理解している。ちょうど私が好きなことをする方法を理解することはできません。それも可能ですか?

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

http://www.oracle-developer.net/display.php?id=515でlistagg()関数を調べてみてください。 users.user_id = interests.user_idの両方の関心テーブルに参加する必要があります(関心がなくてもユーザーを表示したい場合は左にジョイン)。interests.category_id = categories.category_id。

+0

ありがとうございます!私はプロジェクトのためにサブクエリを使わなかった。このビューでは、ユーザー名は何度も繰り返されましたが、インストラクターはそれが問題ではないと言いました(プログラマーはそれを取り除くでしょう)。 しかし、それは私を悩ませており、私はそれを理解したいと思っていました。私はそれにショットを与え、何が起こるか見るでしょう!ありがとう! –