2016-12-11 3 views
-1

Ich möchte STAFF_ID, STAFF_NAME und PROJECT_ID SELECT. STAFF_ID und PROJECT_ID sind in einer Tabelle ASSIGNMENTS verknüpft, aber ich möchte diese Verbindung zeigen, während auch die STAFF_NAME für jede STAFF_ID aus der STAFF Tabelle zeigt. Hier ist mein Code:Wie kann ich mehrere Werte aus 2 Tabellen auswählen? SQL Developer

CREATE TABLE PROJECT 
(PROJECT_ID CHAR(5) NOT NULL, 
PROJECT_NAME CHAR(20), 
PROJECT_TYPE CHAR(20), 
START_DATE DATE, 
END_DATE DATE, 
PRIMARY KEY (PROJECT_ID)); 

CREATE TABLE STAFF 
(STAFF_ID CHAR(5) NOT NULL, 
STAFF_NAME CHAR(20), 
JOB_TYPE CHAR(20), 
JOB_GRADE CHAR(20), 
PRIMARY KEY (STAFF_ID)); 

CREATE TABLE ASSIGNMENTS 
(ASSIGNMENT_ID CHAR(5) NOT NULL, 
PROJECT_ID CHAR(5), 
STAFF_ID CHAR(5), 
PRIMARY KEY (ASSIGNMENT_ID), 
FOREIGN KEY (PROJECT_ID) REFERENCES PROJECT(PROJECT_ID), 
FOREIGN KEY (STAFF_ID) REFERENCES STAFF(STAFF_ID)); 

Alle Tabellen mit Daten gefüllt worden sind, und dies ist die Abfrage, die ich bisher benutzt habe, die zeigt, welche Mitarbeiter an einem bestimmten Projekt arbeiten (aber nur mit STAFF_ID, nicht mit STAFF_NAME im Lieferumfang enthalten):

SELECT STAFF_ID, PROJECT_ID 
FROM ASSIGNMENTS 
WHERE PROJECT_ID = 'B0005'; 

Wie kann ich die Links wie diese während zeigen auch die STAFF_ID aus der Tabelle STAFF verknüpft die STAFF_NAME einschließlich?

Hier einige Daten für eine Zeile jeder Tabelle:

INSERT INTO PROJECT (PROJECT_ID, PROJECT_NAME, PROJECT_TYPE, START_DATE, END_DATE) 
VALUES ('B0001','BIKESHOP.COM','WEB DEVELOPMENT',TO_DATE('15/01/17','DD/MM/YY'),TO_DATE('15/02/17','DD/MM/YY')); 

INSERT INTO STAFF (STAFF_ID, STAFF_NAME, JOB_TYPE, JOB_GRADE) 
VALUES ('ST001','JOHN MASON','WEB DEVELOPER','1'); 

INSERT INTO ASSIGNMENTS (ASSIGNMENT_ID, PROJECT_ID, STAFF_ID, HARDWARE_ID, SOFTWARE_ID) 
VALUES ('A0001','B0001','ST001','H0001','S0001'); 

Was will ich PROJECT_ID, STAFF_ID, STAFF_NAME ist zu zeigen. Nur drei Spalten zeigen diese 3 Werte.

+0

PLZ Geben Sie uns einige Daten als Eingabe und einem gewünschten Ausgang. –

+0

Hier ist eine Reihe von Daten für jede Tabelle Tabelle: – JadstaSeven

Antwort

1

Sie müssen nur Join zu STAFF Tabelle hinzufügen. So etwas wie dieses

SELECT STAFF.STAFF_ID, STAFF.STAFF_NAME, ASSIGNMENTS.PROJECT_ID 
FROM ASSIGNMENTS 
INNER JOIN STAFF ON ASSIGNMENTS.STAFF_ID = STAFF.STAFF_ID 
WHERE ASSIGNMENTS.PROJECT_ID = 'B0005'; 
+0

Es funktioniert perfekt, danke! – JadstaSeven

+0

Sie sind herzlich willkommen :) –

0

ich denke, das wählen Sie Ihr Problem

select PROJECT_ID, STAFF_ID, STAFF_NAME from ASSIGNMENTS 
inner join STAFF on STAFF.STAFF_ID=ASSIGNMENTS.STAFF_ID 
0

Zur Lösung dieser Notwendigkeit lösen können, verbinden Sie die drei Tabellen als nächsten Ansatz:

Generic Syntax:

select * 
from 
    tableA a 
     inner join 
    tableB b 
     on a.common = b.common 
     inner join 
    TableC c 
     on b.common = c.common 

also folgen Sie der nächsten Abfrage:

select a.PROJECT_ID, b.STAFF_ID, c.STAFF_NAME 
from PROJECT a inner join ASSIGNMENTS b 
on a.PROJECT_ID = b.PROJECT_ID 
inner join STAFF c 
on c.STAFF_ID = b.STAFF_ID 

Ergebnis:

enter image description here

Verwandte Themen