1

让我解释一下我的情况,它真的比标题更清楚!我有两张桌子。让我们看看这里,然后我会解释我想做什么。

第一桌(课桌)

+------------------+----------------+
| LessonCode       | SubjectCode    |
+------------------+----------------+
| 1                | 10             |
| 2                | 11             |
| 3                | 12             |
+------------------+----------------+

第二张表(主题表)

+------------------+----------------+------------+
| subjectCode      | SubjectName    | teacherCode|
+------------------+----------------+------------+
| 10               | Maths          | 15         |
| 11               | English        | 20         |
| 12               | Greek          | 30         |
+------------------+----------------+------------+

我会从表lesson中选择具有teacherCode=20. 可以在一个查询中进行吗?

4

7 回答 7

1

尝试这个:

select * 
from lesson l
join subject s on s.subjectCode=l.SubjectCode
where s.teacherCode=20
于 2013-09-17T16:50:00.657 回答
1

要获得老师 X 的所有课程,您必须加入两个表:

select LessonCode from lesson l
inner join subject s on s.subjectCode = l.SubjectCode
where s.teacherCode = x

这基本上执行以下操作:它创建两个表的叉积,然后删除所有不符合该on子句的行。然后它删除所有不符合该where子句的行。这只留下给定老师 X 的课程。

于 2013-09-17T16:50:21.863 回答
1

您需要使用简单的连接。

select l.*
from lesson l
join subject s on l.SubjectCode=s.SubjectCode
where s.teacherCode=20
于 2013-09-17T16:51:09.253 回答
1
SELECT
    *
FROM 
    (lesson, subject)
WHERE 
    lesson.SubjectCode = subject.subjectCode AND
    subject.teacherCode = 20
于 2013-09-17T16:51:11.693 回答
1
SELECT SubjectCode     
from  LessonTbl lt
Left Outer join  subjectTbl st
on       lt.subjectCode    = st.subjectCode      
where st.teacherCode=20.
于 2013-09-17T16:51:30.523 回答
1
SELECT A.*
FROM lesson A
JOIN subject B ON A.SubjectCode = B.SubjectCode
WHERE B.teacherCode = '20'
于 2013-09-17T16:54:19.677 回答
1
Select a.*
From Lesson a
Inner Join Subject b on a.SubjectCode = b.SubjectCode
where c.TeacherCode = '20'

就这样。只要您知道每个课程的 SubjectCode 都存在于 Subject 表中,只需像我的示例中那样执行 Inner Join。否则,将其更改为左外连接。

于 2013-09-17T17:08:12.363 回答