2016-05-29 12 views
1

こんにちは私は2つのテーブルを持っており、リスクテーブルのstaff_idを使用して所有者と連絡先の名前を検索します。私は所有者名とスタッフ名の両方を含むビューを作成することが可能かどうか疑問に思っていました。次のようにビューを作成しようとしましたが、ビューに所有者名または連絡先名のみを含めることができました。 (参照のために私はダービーを使用しています)。前もって感謝します。同じプライマリキーを参照する複数の外部キーのビュー/クエリ

CREATE VIEW public_view AS 
SELECT r.risk_id, r.risk_name s.staff_name 
FROM risk r, staff s 
AND r.owner_id = s.staff_id; 


CREATE TABLE STAFF 
(
    staff_id varchar(8) NOT NULL, 
    staff_name varchar(100), 
    staff_email_addr varchar(30), 
    staff_position varchar(30), 
    staff_sect_elem varchar(60), 
    CONSTRAINT pk_staff_id PRIMARY KEY (staff_id) 
); 

CREATE TABLE RISK 
(
    risk_id varchar(6) NOT NULL, 
    risk_name varchar(20) NOT NULL, 
    risk_desc varchar(20), 
    owner_id varchar(8), 
    contact_id varchar(8), 
    CONSTRAINT pk_risk_id PRIMARY KEY (risk_id), 
    CONSTRAINT fk_owner_id FOREIGN KEY (owner_id) REFERENCES STAFF(staff_id), 
    CONSTRAINT fk_contact_id FOREIGN KEY (contact_id) REFERENCES STAFF(staff_id) 
); 

答えて

0

使用テーブルの別名:

select * 
from RISK r 
LEFT OUTER JOIN STAFF o ON r.owner_id = o.staff_id 
LEFT OUTER JOIN STAFF c ON r.contact_id = c.staff_id 
0

あなたが接近していました。あなたはこのような場合は、FKに参加するには、参加を使用して、両方のテーブルからデータを持つテーブルを作成する必要があります。

CREATE VIEW public_view AS 
SELECT r.risk_id, r.risk_name s.staff_name 
FROM risk r 
LEFT JOIN staff s 
ON r.owner_id = s.staff_id; 

左スタッフテーブルではなく、リスク・テーブルにあるデータを引っ張らないだろうに参加。

0

これは私が

CREATE VIEW public_view1 (risk_id, risk_name, owner_name, contact_name) AS 
SELECT r.risk_id, r.risk_name, o.staff_name, c.staff_name 
FROM risk r 
LEFT OUTER JOIN staff o ON r.owner_id = o.staff_id 
LEFT OUTER JOIN staff c ON r.contact_id = c.staff_id; 
をやってしまったものです
関連する問題