Question

Bonjour à tous, j’ai du mal à bien formuler cela, c’est pourquoi j’ai du mal à trouver une réponse en ligne, je ne peux donc que donner un exemple. J'ai la table de base de données suivante:

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

Et j'aimerais utiliser une instruction SELECT qui capturerait les noms d'action qui jouent dans toutes les séries identiques à celles de smith. Ainsi, les noms d'action résultants devraient être:

costelo, denzel et lopez

Je ne sais même pas quel mot-clé utiliser. Je regardais la commande JOIN et j’essayais également de choisir MINUS. Les noms les plus proches que je pouvais obtenir étaient ceux qui jouaient exactement dans la même série que Smith (dans cette situation, lopez n’est pas inclus et est erroné)

Voici une autre explication:

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 d'autres termes, vous devez renvoyer les acteurs dont l'ensemble de films contient ceux de l'acteur Smith.

Vous cherchez un coup de pouce dans la bonne direction, Tomek

Était-ce utile?

La solution

Désolé. Ma réponse originale a mal compris votre intention. Essayez ceci à la place:

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

Autres conseils

SELECT DISTINCT ActorName 
    FROM dbo.MyTable
    WHERE SeriesName IN (SELECT SeriesName FROM dbo.MyTable WHERE ActorName = 'smith');
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top