2016-04-11 9 views
0

Dies ist Teil einer Hausaufgabe, um ehrlich zu sein, nicht so wichtig, aber immer noch. So , können wir annehmen, die folgenden Tabellen:mysql Wie wähle Felder, die den gleichen Wert in einer anderen Spalte und den gleichen Wert in einer anderen Spalte der Tabelle haben?

 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 

Nun, die Frage ist jene Komponisten auszuwählen, deren jeder Titel wurde durch sang nur ein Sänger. Zum Beispiel, Komponist B hat nur einen Titel, b1, sang nur von S1.

Auch Komponist C hat c1 geschrieben, c2, c3, alle nur durch S3 sang. Diese beiden Komponisten sollten in den Ergebnissen erscheinen.

Im Gegensatz dazu von Komponisten A Lieder, a2 sang wurde nur durch S1 aber a1 beide von S1 sang wurde und durch S2, so A sollte nicht angezeigt in den Ergebnissen.

Ich habe unzählige Kombinationen von geschachtelten SELECTS, GROUP BYs und WHEREs ausprobiert, ohne Glück bisher. Ich bin mir ziemlich sicher, dass irgendwo ein Graf (Sänger) = 1 gebraucht werden sollte, der bisher allerdings ergebnislos eingesetzt wurde.

Jede Hilfe würde sehr geschätzt werden!

+0

zeigen uns, was Sie bisher versucht haben – n1c9

+0

mein Bestes versuchen, so hat etwa weit gewesen, was Deluca unten antwortete so etwas wie: SELECT Komponist, Sänger, Titel von Song INNER singer_prod ON JOIN song.title = singer_prod.sing_title GROUP BY Komponist HAVING count (tragoudistis) = 1; Leider gibt es immer noch nicht das, was ich mir erhofft hatte. In jedem Fall, vielen Dank für Ihr Interesse, hoffe ich bin nah dran! –

+0

Es wäre hilfreich, wenn Sie erklären würden, warum es nicht zurückgibt, was Sie erhoffen und was es zurückgibt, was Sie erwarten. –

Antwort

-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

Eine gute Antwort sollte eine Erklärung enthalten, um zu verdeutlichen, wie es funktioniert. Auf diese Weise lernen das Poster und zukünftige Besucher etwas, anstatt nur Code zu kopieren und einzufügen. – miken32

+0

Das oben erwähnte SELECT umfasst Komponisten, deren Songs jeweils nur von einem Sänger gespielt wurden. Gefragt ist, dass alle Lieder eines Komponisten von nur einem Sänger gesungen wurden. –

+0

Ok Ich habe die Abfrage aktualisiert –

Verwandte Themen