2017-03-23 3 views
0

Ich habe diese TabellenSQL-Abfrage 4 Tabellen

create table Customer2 (cid char(3), cname char(10), primary key (Cid)); 

create table Employee2(eid char(3), ename char(10), salary number(7,2), 
mid char(3),primary key 
(eid), foreign key (mid) references Employee2); 

create table ArtObject2 (aoid char(3), atitle char(12), artist 
varchar(10), pricea number(8,2), primarykey (aoid)); 

create table MakesD2 (aoid char(3), eid char(3), cid char(3), prices 
number, dates date, primary key 
(aoid,CID), foreign key (aoid) references ArtObject2, foreign key (CID) 
references Customer2,foreign key (eid) references Employee2); 

Wie würden Sie diese Abfrage zu tun? Tragen Sie die Namen der Manager der Mitarbeiter ein, die sich mit Chagall-Gemälden befassen.

Ich habe dies bisher

select e.ename 
FROM Employee2 e 
inner join MakesD2 md 
    on md.eid = e.eid 
inner join ArtObject2 a 
    on a.aoid = md.aoid 
where a.artist = 'Chagall'; 

hier sind die Tabellen http://imgur.com/a/toq3B und http://imgur.com/a/qnOEA Ich habe Wilson und Loftus zu bekommen, aber ich Smith zweimal.

+1

http://www.azquotes.com/quote/1043655 –

+1

Geben Sie Beispieldaten und erwartete Ausgabe in Form von formatiertem Text in der Frage – GurV

+0

Ich fügte die Tabellen –

Antwort

0

Ich denke, dass Manager und Angestellte Custumer und Employees Table sind;

So ist die Abfrage

select emp.ename,cus.cname from Employee2 emp 
inner join MakesD2 ma 
     on ma.eid = emp.eid 
inner join ArtObject2 art 
     on art.cid = ma.CID 
inner join Customer2 cus 
     on cus.Cid = ma.CID 
where art.artist = "Chagall" 

sein sollte - Bearbeiten ich begehen einen Fehler, jetzt habe ich das Problem

denke ich, dass genug sein wird

select distinct emp2.ename from Employee2 emp 
inner join Employee2 emp2 
     on emp.mid = emp2.eid 
inner join MakesD2 ma 
     on ma.eid = emp.eid 
inner join ArtObject2 art 
     on art.cid = ma.CID 
inner join Customer2 cus 
     on cus.Cid = ma.CID 
where art.artist = "Chagall" 
+0

Tut mir leid, das funktioniert nicht. –

+0

Könnten Sie bitte Beispieldaten zur Verfügung stellen? –

+0

Proben werden gepostet. –

1

Dies sollte funktionieren

select em.ename 
from Employee2 emp 
inner join MakesD2 ma 
    on ma.eid = emp.eid 
inner join ArtObject2 art 
    on art.cid = ma.CID 
inner join Customer2 cus 
    on cus.Cid = ma.CID 
inner join Employee2 em 
on em.eid = emp.mid 
where art.artist = "Chagall" 
Verwandte Themen