一个关于用VB操纵数据库的问题
表1有字段:学分,姓名,课程
表2有字段:学号,姓名,年龄
现在想做的是:
根据 课程、年龄 查出所对应的学分
VB与数据库的连接我知道,但这个sql查询语句写不出……望各位朋友能帮忙,感激不尽!!
var_课程 and 年龄 = var_年龄
为什么要加 var_ 啊? 展开
首先我建议你更改你的数据库的表的设计:
建立三个表
表1
自增编号,学号,课程编号,学分
表2
学号,姓名,年龄
表3
课程编号,课程名称
为什么建立三个表呢?首先你想想,如果有一门课叫“高等数学”,而这门课只有一个学生上课 ,但是由于种种原因,这个学生退学了,然后这个学生的学号就删除,问题就来了,因为只有这个学生上了“高等数学”这门课,删除这个学生之后数据库里就没有“高等数学”这门课的信息了。
为什么表1中有自增编号?那是因为一个学生可以选择很多门课,为了保证数据库中关键字的唯一性而设计的。
LEFT JOIN返回”first_table”中所有的行尽管在” second_table”中没有相匹配的数据。
RIGHT JOIN返回”second_table”中所有的行尽管在”first_table”中没有相匹配的数据。
INNER JOIN返回的结果集是两个表中所有相匹配的数据。
Table1为表1 Table2为表2 Table3为表3
根据设计的表写的语言
select 学分
from Table1 inner join Table2 on Table1.学号=Table2.学号 inner join Table3 on Table1.课程编号=Table3.课程编号
where Table1.学号=2 and 姓名='里斯' and 课程名称='英语'
下面是图
2023-08-15 广告
另外你提供的查询也有问题,怎么会有这样的逻辑的,按课程,年龄进行查询的。
按你的要求,答案如下:
select
*
from 表1 a
inner join 表2 b on a.学号 = b.学号
where 课程 = var_课程 and 年龄 = var_年龄
更正一楼的,可以看出谁没有安排课程.
select
*
from 表1 a
right join 表2 b on a.姓名 = b.姓名
where 课程 = var_课程 and 年龄 = var_年龄