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!
zeigen uns, was Sie bisher versucht haben – n1c9
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! –
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. –