2016-04-11 83 views
0

這是作業的一部分,要非常誠實,並不重要,但仍然如此。 所以,讓我們假設我們有如下表:現在mysql如何選擇在另一列中具有相同值且在另一個表的列中具有相同值的字段?

 Song          Singer_prod 

composer  title       singer  sing_title 
    A   a1        S1   b1 
    A   a2        S3   c3 
    B   b1        S3   c1 
    C   c1        S1   a1 
    C   c2        S1   a2 
    C   c3        S3   c2 
               S2   a1 

,問題是選擇那些作曲家,他的每部影片一直唱只由一個歌手。 例如,作曲家B只有一個標題,b1,只唱S1

此外,作曲家ÇC1,C2,C3,全部由S3只演唱。 這兩位作曲家應該在結果中出現。

相反,從作曲家的一個歌曲,A2是唱只S1A1S1唱都和S2,所以一個應該不會出現在結果中。

我試過無數組合的嵌套SELECTS,GROUP BY和WHERE,目前還沒有運氣。我唯一確定的是,應該在某個地方需要一個計數(歌手)= 1,儘管如此,仍然無果而終。

任何幫助將不勝感激!

+0

告訴我們,到目前爲止,你已經嘗試過什麼 – n1c9

+0

我最好的嘗試迄今已有大約什麼德盧卡下面回答, 是這樣的: SELECT作曲家,歌手,標題 宋 INNER JOIN singer_prod ON song.title = singer_prod.sing_title GROUP BY composer HAVING count(tragoudistis)= 1; 不幸的是,它仍然沒有回報我所希望的。 無論如何,感謝您的關注,希望我越來越接近! –

+0

如果你解釋了爲什麼它不會返回你所期望的以及它返回的結果與你期望的結果會有所幫助。 –

回答

-1
SELECT Composer, Singer FROM Song x 
INNER JOIN Singer_prod y on x.title = y.sing_title 
GROUP BY Composer, Singer 
HAVING COUNT(Distinct Singer) = 1 
+1

一個好的答案應該包括一個解釋來說明它是如何工作的。這樣,海報和任何未來的訪問者將學習一些東西,而不僅僅是複製和粘貼代碼。 – miken32

+0

上面提到的SELECT包含了作曲家,他們的歌曲只能由一名歌手演奏。所要求的是所有作曲家的歌曲都只有一位歌手唱過歌。 –

+0

好吧,我更新了查詢 –

相關問題