2016-04-22 51 views
1
select m.m_name, p.place_town 
from musician m 
inner join place p 
    on m.born_in = p.place_no 
where m.born_in = (select m.born_in from musician m where m.m_name = 'James First') and 
    m.m_name != 'James First' 
+0

子查詢似乎沒有關聯,所以它可能不如您想象的那麼糟糕。 –

+0

還好,可以做一個自己加入來消除這個嗎? –

回答

0

您可以用替換子查詢自聯接:

select m.m_name, p.place_town 
from musician m 
inner join place p 
    on m.born_in = p.place_no 
inner join 
(
    select m.born_in 
    from musician m 
    where m.m_name = 'James First' 
) t 
    on m.born_in = t.place_no 
where m.m_name != 'James First' 
+0

非常感謝。但是對您的查詢稍作修改就會給我正確的答案。從音樂家米選擇m.m_name,p.place_town 內連接上m.born_in代替對 = p.place_no 內加入 ( 選擇m.born_in 從音樂家米 其中m.m_name =「詹姆斯第一」 )as t on t.born_in = p.place_no 其中m.m_name!='James First' –

0
select m.m_name, p.place_town 

從音樂家米 內對m.born_in = p.place_no 內加入 ( 選擇加入取代對 m.born_in 來自音樂家m 其中m.m_name ='James First' )as t on t.born_in = p.place_no whe re m.m_name!='James First'