Pregunta

Hola a todos, estoy teniendo dificultades para redactar esto correctamente, por eso tengo problemas para encontrar una respuesta en línea, así que lo mejor que puedo hacer es dar un ejemplo. Tengo la siguiente tabla de base de datos:

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

Y me gustaría usar una instrucción SELECT que tome los nombres de los actores que juegan en todas las mismas series en las que juega smith. Por lo tanto, los actornames resultantes deberían ser:

costelo, denzel y lopez

Ni siquiera estoy seguro de qué palabra clave utilizar. Estaba mirando el comando ÚNETE y también probé MINUS, lo más cerca que pude estar fueron los nombres de los actores que juegan exactamente en la misma serie que juega Smith (en esa situación, López no está incluido y está mal)

Aquí hay otra explicación:

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. 

En otras palabras, debe devolver aquellos actores cuyo conjunto de películas contiene los del actor Smith.

Buscando un empuje en la dirección correcta, Tomek

¿Fue útil?

Solución

Lo siento. Mi respuesta original malinterpreta tu intención. Intente esto en su lugar:

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

Otros consejos

SELECT DISTINCT ActorName 
    FROM dbo.MyTable
    WHERE SeriesName IN (SELECT SeriesName FROM dbo.MyTable WHERE ActorName = 'smith');
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top