我的Sql查询没有提供与Many to Many关系相关的所需输出

时间:2017-02-13 09:41:18

标签: sql sql-server

以下是我的学生和批处理表

学生表

+-------------------------------------------------------+
|Sid|Name   |Address   |Gender|ContactNumber|DateOfBirth|
+-------------------------------------------------------+
| 1 |Mike   |Delhi     |Male  | 986523245   |19900909   |
| 2 |John   |Washington|Male  | 78452356    |19900109   |
| 3 |Garima |Lucknow   |Female| 78659432    |19910903   |
| 4 |Sparshi|Lucknow   |Female| 789456135   |19910410   |
| 5 |Akash  |Jaipur    |Male  | 965478312   |19850905   |
+-------------------------------------------------------+

批处理表

+-------------------------------------+
|Bid|BName     |BStartDate| BCapacity |
+-------------------------------------+
| 1 |.NetBatch |2016-10-10| 30        |
| 2 |JavaBatch |2016-12-10| 20        |
| 3 |CCNABatch |2017-01-10| 15        |   
+-------------------------------------+

它有很多关系。我正在创建另一个表来检索这些表中的数据。 我创建了另一个名为“StudentBatch”表的表

Create table Student_Batch
         (Stdid int,
          Batid int,
          Std_JoiningDate date,
          Foreign key(StdId) references Student(Sid),
          Foreign key(BatId) references Batch(Bid))


+-----------------------------+
|Stdid |Batid|Std_JoiningDate|
+-----------------------------+
| 1    |  1  |   2017-01-10   |
| 2    |  2  |   2017-01-01   |
| 3    |  1  |   2017-01-20   |
| 4    |  3  |   2016-10-12   |
| 5    |  2  |   2016-09-10   |
+-----------------------------+

当我使用Join执行两个(Student和StudentBatch)表时,我没有获得所需的输出。 以下是我的询问:

 Select      S.Name,SB.Batid
 from        Student S
 inner Join  Student_Batch SB
 on          SB.Batid = S.Sid

输出是:

Name    Batid
Mike    1
John    2
Mike    1
Garima  3
John    2

请纠正我在哪里做错了。

1 个答案:

答案 0 :(得分:1)

希望,我理解你的问题。

我认为您正在与两个表中的批次ID和学生ID进行联接。但是,您必须在两个表(Student和Student_batch)中使用学生ID进行连接条件

请查看以下查询

Select      S.Name,SB.Batid
from        Student S
inner Join  Student_Batch SB
on          SB.Stdid = S.Sid -- changed