62.1确定各表间的联接关系 下面将通过一个示例来介绍创建一个含有多个表中信息的查询 例如在 GXGLXT数据库中有三个表: Student、 Grade、 Courses 现在想知道学号前四位是9904和9804的所有学生考试的成绩 当在多个表或视图间进行查询时,需要指出这些表或视图间的 联接关系。如前面所述,启动查询设计器,在“添加表和视图” 对话框中从“数据库”中选择 GXGLXT库,在“数据库中的表”中 选择 Student表,单击【添加】按钮,再选择 Grade表,再单击 杠,此时系统自动弹出W报件 个“联接条件”,询问國学 f7a学号 是否根据两表中都有的 联接类型 “学号”字段建立内部联。内部联接①C左联接0C右联接0)C亮全联接0 接,单击“确定”,两表盐 间就有了一条连线,代表的一个只包含记录m与记录做相配的结果集 它们之间的联接。然后再 添加 Courses表,最后关闭 确定 取消 对话。20 Visual Foxpro60程序设计 21
2021-2-20 Visual FoxPro 6.0程序设计 21 6.2.1 确定各表间的联接关系 下面将通过一个示例来介绍创建一个含有多个表中信息的查询。 例如在GXGLXT数据库中有三个表:Student、Grade、Courses, 现在想知道学号前四位是9904和9804的所有学生考试的成绩。 当在多个表或视图间进行查询时,需要指出这些表或视图间的 联接关系。如前面所述,启动查询设计器,在“添加表和视图” 对话框中从“数据库”中选择GXGLXT库,在“数据库中的表”中 选择Student表,单击【添加】按钮,再选择Grade表,再单击 【加添】,此时系统自动弹出 一个“联接条件” ,询问 是否根据两表中都有的 “学号”字段建立内部联 接,单击“确定” ,两表 间就有了一条连线,代表 它们之间的联接。然后再 添加Courses表,最后关闭 对话框
在“查询设计器”中选择“联接”选项卡,如图: 查询设计器-查询1 回区 Student Grad Course 学号 课程代号 姓名 课程代号 查询设计器 学号 性别 课程名 开课学期 出生日期 学时数 國吗 考试类别 学分数 考试时间 字段联接筛选排序侬据分组依据杂项 类型 字段名 否条件 逻辑 Inner Joi Student.学号 Grade学号 Inner o: grade课程代号 Course课程代号 Inner Join Left Outer Jo Right Outer Join Full Join 插入 移去①) Is NULL Between In 在VFP6中表间的联接有四种类型,分别是: 2021-2-20 Visual Foxpro60程序设计
2021-2-20 Visual FoxPro 6.0程序设计 22 在“查询设计器”中选择“联接”选项卡,如图: 在VFP6中表间的联接有四种类型,分别是:
(1) Inner Join:内部联接,指定只有满足联接条件的记录包含在 结果中,此类型是默认的,也是最常用的; (2) Right Outer Join:右联接,指定满足联接条件的记录,以及 满足联接条件右侧的表中记录(即使不匹配联接条件)都包含在 结果中; (3) Left outer join:左联接,指定满足联接条件的记录,以及满 足联接条件左侧的表中记录(即使不匹配联接条件)都包含在结 果中; (4) Full Join:完全联接,指定所有满足和不满足联接条件的记 录都包含在结果中。 如果想修改各表间的联接,双击查询设计器上部窗口表之间的连 线,系统将弹出“连接条件”对话框;或者通过打开查询设计器 下部的“联接”选项卡进行。一般不应随便更改连接条件,不然 会与实际数据间的关系不符 “条件”列表中包含如下几项: (1)=:指字段值与实例相等; 2021-2-20 Visual Foxpro60程序设计
2021-2-20 Visual FoxPro 6.0程序设计 23 (1)Inner Join:内部联接,指定只有满足联接条件的记录包含在 结果中,此类型是默认的,也是最常用的; (2)Right Outer Join:右联接,指定满足联接条件的记录,以及 满足联接条件右侧的表中记录(即使不匹配联接条件)都包含在 结果中; (3)Left Outer Join:左联接,指定满足联接条件的记录,以及满 足联接条件左侧的表中记录(即使不匹配联接条件)都包含在结 果中; (4)Full Join:完全联接,指定所有满足和不满足联接条件的记 录都包含在结果中。 如果想修改各表间的联接,双击查询设计器上部窗口表之间的连 线,系统将弹出“连接条件”对话框;或者通过打开查询设计器 下部的“联接”选项卡进行。一般不应随便更改连接条件,不然 会与实际数据间的关系不符。 “条件”列表中包含如下几项: (1)=:指字段值与实例相等;
(2)LIKE:表示“字段名”栏中给出的字段值与“实例” 中给出的文本值之间执行不完全匹配,它主要针对字符类型。例 如,如设置查询条件为“ Student学号LIKE9904”,那么诸如 “学号”字段前四位为9904的记录都满足该条件; (3)=:表示在“字段名”栏中给出的字段值与“实例”栏中 给出的文本值之间执行完全匹配检查,它也主要是针对字符类型 的。 (4)>:即为“字段名”栏中给出的字段的值应大于“实例” 栏中给出的值; (5)>=:即为“字段名”栏中给出的字段的值应大于或等于 “实例”栏中给出的值; (6)<:即为“字段名”栏中给出的字段的值应小于“实例 栏中给出的值; (7)<=:即为“字段名”栏中给出的字段的值应小于或等于 “实例”栏中给出的值; (8) Is Null指定字段必须包含Nul值; (9如 Between:即为输出宭段偵辟于或等于“实例”栏中的
2021-2-20 Visual FoxPro 6.0程序设计 24 (2)LIKE:表示“字段名”栏中给出的字段值与“实例”栏 中给出的文本值之间执行不完全匹配,它主要针对字符类型。例 如,如设置查询条件为“Student.学号 LIKE 9904” ,那么诸如 “学号”字段前四位为9904的记录都满足该条件; (3)==:表示在“字段名”栏中给出的字段值与“实例”栏中 给出的文本值之间执行完全匹配检查,它也主要是针对字符类型 的。 (4)>:即为“字段名”栏中给出的字段的值应大于“实例” 栏中给出的值; (5)>=:即为“字段名”栏中给出的字段的值应大于或等于 “实例”栏中给出的值; (6)<:即为“字段名”栏中给出的字段的值应小于“实例” 栏中给出的值; (7)<=:即为“字段名”栏中给出的字段的值应小于或等于 “实例”栏中给出的值; (8)Is Null:指定字段必须包含Null值; (9)Between:即为输出字段的值应大于或等于“实例”栏中的
最小值,而小于或等于“实例”栏中的最大值; (10)IN(在之中):即为输出字段的值必须是“实例”栏 中所给出值中的一个,在“实例”栏中给出的各值之间以逗号分 隔 此外,“联接”选项卡中的“否”列用于指定NOT条件,“逻 辑”列用于设置各联接条件和筛选条件之间的逻辑关系 (无、AND.和OR.),“大小写”列用于指定是否区分大小写。 下方的“插入”和“移去”按钮分别用于增加或移去查询条件。 最后,在设置筛选条件时,我们应注意如下几点: (1)备注字段和通用字段不能用于设置查询条件; (2)逻辑值的前后必须使用句点号,如T (3)只有当字符串与查询的表中字段名相同时,要用引号将字 符串括起来,否则不需要用引号将字符串括起来; (4)日期不必用花括号括起来 2021-2-20 Visual Foxpro60程序设计 返回25
2021-2-20 Visual FoxPro 6.0程序设计 25 最小值,而小于或等于“实例”栏中的最大值; (10)IN(在…之中):即为输出字段的值必须是“实例”栏 中所给出值中的一个,在“实例”栏中给出的各值之间以逗号分 隔。 此外, “联接”选项卡中的“否”列用于指定.NOT.条件, “逻 辑 ” 列 用 于 设 置 各 联 接 条 件 和 筛 选 条 件 之 间 的 逻 辑 关 系 (无、.AND.和.OR.), “大小写”列用于指定是否区分大小写。 下方的“插入”和“移去”按钮分别用于增加或移去查询条件。 最后,在设置筛选条件时,我们应注意如下几点: (1)备注字段和通用字段不能用于设置查询条件; (2)逻辑值的前后必须使用句点号,如.T.; (3)只有当字符串与查询的表中字段名相同时,要用引号将字 符串括起来,否则不需要用引号将字符串括起来; (4)日期不必用花括号括起来。 返回