2013-11-22 74 views
0

我需要顯示每個至少有一個女性成員的所有藝術家的名稱。MySQL使用子查詢而不是JOIN

成員表如下所示:

Members 
------- 
MemberID, Firstname, Lastname, Address, Gender 

藝術家表如下所示:

Artists 
------- 
ArtistID, Artistname, City 

的表可以使用xRefArtistsMembers表,這是關係如下:

xRefArtistsMembers 
------------------ 
MemberID, ArtistID 

我已制定以下子查詢:

select 
    ar.artistname from artists ar 
where 
    ar.artistid in 
    (
    (
     select 
     x.artistid 
     from 
     xrefartistsmembers x 
    ) 
    in 
    (
     select 
     m.memberid 
     from 
     members m 
    ) 
); 

不編譯。同樣,我的問題是:我需要顯示至少有一名女性成員的所有藝術家的姓名。只使用子查詢。

+2

您沒有列表示成員的性別。 – Dai

+0

各有一位女性會員?你會如何發現..我沒有看到任何性別列 – Backtrack

+0

讓我道歉,我無意中忘記包括記錄數據的關鍵peice。 – user2948897

回答

1

嘗試

SELECT * 
    FROM artists a 
WHERE EXISTS 
(
    SELECT * 
    FROM xRefArtistsMembers x 
    WHERE artistid = a.artistid 
    AND EXISTS 
    (
    SELECT * 
     FROM members 
    WHERE memberid = x.memberid 
     AND gender = 'female' 
) 
) 

這裏是SQLFiddle演示

+0

感謝您的回覆。出於某種原因,以下查詢:select * from artists ar where artistname in(從members.gender ='F'的成員中選擇性別);出於某種原因產生了一個空的設置> – user2948897

+0

你非常歡迎。 ;)在上面的註釋中提到的查詢如何在內部子查詢中將外部select中的'artistname'與'gender'進行比較時生成任何內容。 – peterm

+0

非常正確。好的,謝謝,我想我更瞭解「EXISTS」聲明 – user2948897