【问题标题】:Data Joining of two Tables MS Access SQL两个表的数据连接 MS Access SQL
【发布时间】:2020-07-02 13:56:39
【问题描述】:

我有两个名为 - 1) Students 2) Classes 的表。 ClassID是Classes表的主键和Student表的外键。

我想访问具有特定 RollNo 的 Student 表中的一行(此 RollNo 由用户输入给出)以及 Classes 表中的所有行。

学生表如下:-

RollNo   |   SName   |    DOB     |   ClassID   |   Picture
--------------------------------------------------------------
101      | AAAA      | 22/09/2012 | 1           | attachment
102      | BBBB      | 22/09/2010 | 2           | attachment
103      | CCCC      | 22/09/2011 | 1           | attachment
104      | DDDD      | 22/09/2010 | 4           | attachment

RollNo 是主键。学生的最后一个领域是图片附件。

类表如下:-

ClassID   |   Class
--------------------
1         | One     
2         | Two      
3         | Three    
4         | Four    

我想要这样的输出

输出

RollNo   |   SName   |    DOB     |   Class   |   Picture
--------------------------------------------------------------
         |           |            | One       | 
102      | BBBB      | 22/09/2010 | Two       | attachment
         |           |            | Three     | 
         |           |            | Four      |

获取这样的数据的查询是什么?

【问题讨论】:

  • 查看我的更新答案和输出查看图片的参考

标签: sql ms-access join union


【解决方案1】:

您需要将班级左连接到学生:

select s.RollNo, s.SName, s.DOB, c.Class, s.Picture
from classes as c left join (select * from students where rollno = 102) as s
on s.classid = c.classid

【讨论】:

  • 我试过这个,但它给出了错误。 Join expression not supported.
  • @MuhammadRizwan 你是对的 Access 不支持这样的 ON 子句。检查我的编辑答案。
【解决方案2】:

看这里并尝试一下:

select s.RollNo,s.SName,s.DOB,c.Class,s.Picture
from Students s
Left join Classes c on c.ClassID   = s.ClassID
where s.RollNo=101;

这里正是你想要的:

【讨论】:

  • 通过执行此查询,数据集中只有一条记录。 RollNo 也必须由用户输入。
  • @MuhammadRizwan 上面的查询正是你想要的输出
  • 您辛苦了,但只有一个记录行包含基于特定RollNoRollno, SName, DOB, Class, Picture 值。以及表 Classes 中只有 Class 列值的其他行。
【解决方案3】:

我认为下面的 SQL 就是你所追求的:

SELECT s.RollNo, S.SName, S.DOB, C.Class, S.Picture
FROM Students S, Classes C
WHERE S.RollNo=[Enter roll no];

这给出了:

问候,

【讨论】:

  • 感谢您的回答。但这不是我想要的。我想要一个基于RollNo(由用户提供)的学生记录行并将ClassId与此记录匹配。并且来自 Classes 的所有 Class 记录仅包含此列值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-11
  • 1970-01-01
  • 2010-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多