سؤال

ويا كل شيء، وأنا أواجه وقتا صياغة صعبة هذا صحيح وهذا هو السبب ايم تواجه مشكلة في العثور على إجابة على الانترنت، وبالتالي فإن أفضل ما يمكن فعله هو إعطاء مثال على ذلك. لدي قاعدة بيانات الجدول التالي:

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

وأود أن استخدام عبارة SELECT التي من شأنها أن انتزاع actornames التي تلعب في كل من نفس السلسلة الذي يلعب سميث في ذلك يجب أن يكون actornames الناتجة:.

وcostelo، دينزل ولوبيز

وأنا لست حتى متأكدا من الكلمة الرئيسية للاستخدام. كنت أبحث في الانضمام القيادة وأيضا حاول الطرح، الأقرب أتمكن من الحصول كانت actornames التي تلعب بالضبط في نفس السلسلة الذي يلعب سميث (في هذه الحالة، لا يتم تضمين لوبيز ومن الخطأ)

وهنا هو تفسير آخر:

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. 

وبعبارة أخرى، عليك أن تعود تلك الجهات التي مجموعة من الأفلام تحتوي على تلك الممثل سميث.

وتبحث عن دفعة في الاتجاه الصحيح، توميك

هل كانت مفيدة؟

المحلول

وعذرا. جوابي الأصلي misunderstodd القصد الخاص. جرب هذا بدلا من ذلك:

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

نصائح أخرى

SELECT DISTINCT ActorName 
    FROM dbo.MyTable
    WHERE SeriesName IN (SELECT SeriesName FROM dbo.MyTable WHERE ActorName = 'smith');
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top