2010-07-30 58 views
1

我被困在一个作业..SQL SELECT:将一个PK与一个元组相匹配,并从该元组的值中选择其他与该元组具有相同值的其他元素?

我怎么能从这张表检查什么cID,sID ='03'正在?然后,检查与sID ='03'具有相同cID的其他sID并将其选中?

sID cID  year  grades 
-------------------------------- 
01 L21D 1997 4 
01 L24D 1998 2 
01 L32D 1998 3 
02 L21D 1998 3 
02 L32D 1998 4 
03 L32D 1998 

这是我想选择什么:

sID cID 
------------- 
01 L32D 
02 L32D 
03 L32D 

我已经尝试不同的组合,但没有给我想要的东西。也许我现在太累了。

比如我尝试这样做:

SELECT sID FROM studentcourse WHERE sID = ( SELECT cID FROM studentcourse WHERE sID = '03' )

BR,周杰伦

+1

大家好,欢迎堆栈溢出。请给出一个你想要的结果的例子,并附上评论。 – 2010-07-30 14:14:26

+1

你有多远?如果你表明你已经为自己付出了一些努力,人们更可能会提供帮助。 – Blorgbeard 2010-07-30 14:18:16

+0

周杰伦,你应该编辑你的问题来添加那些东西。 – Blorgbeard 2010-07-30 14:19:18

回答

3

类是SID = '03' 走:

Select cID from StudentsInClasses where sID = '03' 

学生谁在某些时候把同一类SID = '03'(包括SID = '03'):

Select 
    sID 
From 
    StudentsInClasses 
Where 
    cID in (Select cID from StudentsInClasses where sID = '03') 
+0

谢谢! 至少我接近了正确^^' 谢谢你们。回头看看:) 我喜欢这个论坛。伟大的名字:) – jdnhldn 2010-07-30 14:32:39

+0

@jdnhldn你可以随时展示一点爱,然后点击你最喜欢的答案旁边的复选标记。 – EliThompson 2010-07-30 14:44:15

+1

刚刚出柜什么爱:) – jdnhldn 2010-07-30 18:47:42

0

这可以让你的CID(S)其中SID是 '03':

select cID from table where sID = '03' 

一种方式与相同的CID让其他SID(S),是把上面的查询到一个子查询:

select * from table 
where cID in (
    select cID from table where sID = '03' 
) 
0
SELECT cId, SId 
from table 
WHERE (cId, SID) IN (Select CId, SId from Table 
       WHERE sId = '03') 

结果将是:

01 L32D
02 L32D
03 L32D

0

用途:

SELECT t.cid, 
      t.sid 
    FROM TABLE t 
    JOIN TABLE x ON x.cid = t.cid 
        AND x.sid = '03' 

它更具可读性,如下所示:

SELECT t.cid, 
      t.sid 
    FROM TABLE t 
WHERE t.cid IN (SELECT x.cid 
          FROM TABLE x 
         WHERE x.sid = '03') 

使用EXISTS:

SELECT t.cid, 
      t.sid 
    FROM TABLE t 
WHERE EXISTS(SELECT NULL 
         FROM TABLE x 
         WHERE x.cid = t.cid 
          AND x.sid = '03') 
相关问题