Domanda

Ciao a tutti, ho difficoltà a scrivere questo correttamente, motivo per cui ho problemi a trovare una risposta online, quindi il meglio che posso fare è fare un esempio. Ho la seguente tabella di database:

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

E vorrei usare un'istruzione SELECT che catturasse gli actornames che suonano in tutte le stesse serie in cui Smith gioca. Quindi gli actornames risultanti dovrebbero essere:

costelo, denzel e lopez

Non sono nemmeno sicuro di quale parola chiave utilizzare. Stavo guardando il comando JOIN e ho anche provato MINUS, il più vicino che potevo ottenere erano actornames che suonavano esattamente nella stessa serie di Smith (in quella situazione, Lopez non è incluso ed è sbagliato)

Ecco un'altra spiegazione:

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. 

In altre parole, devi restituire quegli attori il cui set di film contiene quelli dell'attore Smith.

Alla ricerca di una spinta nella giusta direzione, Tomek

È stato utile?

Soluzione

Siamo spiacenti. La mia risposta originale fraintende il tuo intento. Prova invece questo:

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')

Altri suggerimenti

SELECT DISTINCT ActorName 
    FROM dbo.MyTable
    WHERE SeriesName IN (SELECT SeriesName FROM dbo.MyTable WHERE ActorName = 'smith');
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top