2016-05-29 11 views
1

Hallo Ich habe zwei Tabellen und die staff_id aus der Risikotabelle wird verwendet, um den Namen des Besitzers und der Kontaktperson nachzuschlagen. Ich habe mich gefragt, ob es möglich ist, eine Ansicht zu erstellen, die sowohl den Namen des Besitzers als auch den Namen des Mitarbeiters enthält. Ich habe versucht, eine Ansicht wie unten gezeigt zu erstellen, aber ich konnte nur den Besitzernamen oder den Kontaktnamen in der Ansicht angeben. (Als Referenz verwende ich Derby). Danke im Voraus.Aufrufe/Abfragen für mehrere Fremdschlüssel, die auf die gleichen Primärschlüssel verweisen

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

Antwort

0

Verwenden Sie Tabelle Aliase:

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

Sie waren in der Nähe. Sie müssen eine Tabelle mit Daten aus beiden Tabellen erstellen, in diesem Fall einer Verknüpfung mit, Füge- auf 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; 

LEFT JOIN keine Daten ziehen, die in Personal-Tabelle ist aber nicht in Gefahr Tabelle.

0

Dies ist, was ich bis Ende

tun
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;