SQL Vergleich Satz von Informationen in einer Spalte
Frage
Hey alle, ich bin dies richtig eine schwierige Zeit Formulierung, welche, warum in Schwierigkeit hat, online eine Antwort zu finden, so das Beste was ich tun kann, ist ein Beispiel geben. Ich habe die folgende Datenbanktabelle:
ACTORNAME SERIESNAME
------------------------------ ------------
baldwin found
baldwin lost
baldwin rocks
baldwin sienfield
costelo friends
costelo prince
costelo remember
denzel friends
denzel prince
denzel remember
fox found
fox friends
fox prince
lopez found
lopez friends
lopez prince
lopez remember
pitt er
pitt everybody
pitt friends
pitt heroes
pitt rocks
smith friends
smith prince
smith remember
Und ich mag eine SELECT-Anweisung verwenden, die die actornames greifen würden, die in allen von der gleichen Serie spielen, den Schmied in spielt also die resultierende actornames soll.
Costelo, denzel und lopez
Ich bin nicht einmal sicher, welche verwenden Schlüsselwort zu. Ich war bei dem JOIN-Befehl suchen und auch MINUS versucht, die nächsten, die ich bekommen konnte, war actornames, die genau in der gleichen Serie spielen, den Schmied spielt (in dieser Situation lopez nicht inbegriffen und ist falsch)
Hier ist eine andere Erklärung:
suppose Smith acts in movies X and Y.
Suppose also that actor
A acts in movies X, Z
B acts in Y
C acts in X, Y, Z
D acts in X, Y
The answer to the query should be actors C and D.
Mit anderen Worten, müssen Sie jene Akteure zurückkehren, dessen Satz von Filmen die Schauspieler Smith enthält.
Sie suchen einen Schubs in die richtige Richtung, Tomek
Lösung
Es tut uns leid. Meine ursprüngliche Antwort misunderstodd Ihre Absicht. Versuchen Sie stattdessen:
select t2.actorname,
count(t2.seriesname)
from mytable t1
join mytable t2
on t1.seriesname=t2.seriesname and t1.actorname='smith' and t2.actorname <> 'smith' group by t2.actorname
having count(t2.seriesname)=(select count(seriesname) from mytable where actorname='smith')
Andere Tipps
SELECT DISTINCT ActorName
FROM dbo.MyTable
WHERE SeriesName IN (SELECT SeriesName FROM dbo.MyTable WHERE ActorName = 'smith');