加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何从具有多个外键的多个表中选择sqlite结果

发布时间:2020-12-12 23:43:03 所属栏目:百科 来源:网络整理
导读:我想从多个具有多个外键的表中选择sqlite中的结果,我尝试了JOIN但是效果不好;例如 : 学生桌: CREATE TABLE STUDENT ( STUDENT_NAME TEXT NOT NULL,STUDENT_NUMBER INTEGER PRIMARY KEY NOT NULL,STUDENT_ADDRESS TEXT NOT NULL ); 和一个EXAMS表: CREATE
我想从多个具有多个外键的表中选择sqlite中的结果,我尝试了JOIN但是效果不好;例如 :

学生桌:

CREATE TABLE STUDENT (
 STUDENT_NAME    TEXT        NOT NULL,STUDENT_NUMBER  INTEGER  PRIMARY KEY  NOT NULL,STUDENT_ADDRESS TEXT        NOT NULL
 );

和一个EXAMS表:

CREATE TABLE EXAMS(
 EXAM_CODE      INTEGER   PRIMARY KEY  NOT NULL,EXAM_SUBJECT   TEXT        NOT NULL,EXAM_LOCATION  TEXT        NOT NULL
 );

以及一个名为WROTE_EXAM的表格,用于为编写特定考试的学生提供信息

CREATE TABLE WROTE_EXAM (
 STUDENT_NUMBER  INTEGER     NOT NULL,EXAM_CODE       INTEGER     NOT NULL,DATE            DATE        NOT NULL,FOREIGN KEY(STUDENT_NUMBER) REFERENCES STUDENT(STUDENT_NUMBER),FOREIGN KEY(EXAM_CODE) REFERENCES EXAMS(EXAM_CODE));

这是插入表格的示例数据:

STUDENT_NAME : John
STUDENT_NUMBER: 123456789
STUDENT_ADDRESS : 10th street
EXAM_CODE: 123
EXAM_SUBJECT: One Subject
EXAM_LOCATION: Class

现在,我想:
a)输出编写考试的学生姓名,考试代码和学生所在地
b)输出ID为123456789的学生的考试代码,考试科目和考试地点

谢谢

连接表时,您几乎总是希望包含显式连接条件. SQLite syntax diagrams可能会有所帮助:

所以评论中的SQL看起来应该更像这样:

select student.student_name,exams.exam_code,...
from student
join wrote_exam using (student_number)
join exams using (exam_code)
where ...

或者你可以使用JOIN … ON:

select student.student_name,...
from student
join wrote_exam on student.student_number = wrote_exam.student_number
join exams on exams.exam_code = wrote_exam.exam_code
where ...

然后根据需要添加条件以过滤结果.

请注意,我还在SELECT子句中的列中添加了一些表限定符,需要这些限定符来唯一地指定您感兴趣的exam_code,并且由于需要对一列进行限定,因此我为了一致性而完成了所有这些操作.在现实生活中,我会将它们作为前缀,以使事情变得美好和明确.

另外,我没有在任何地方看到student_location,也许你的意思是student.student_address或exams.exam_location.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读