FOXPRO SQL 未公开特性——别名和自连接
FOXPRO SQL 中的别名和自连接是两个重要的概念。别名是指在 SQL 语句中对数据库文件的另一个名称,自连接则是指在同一个数据库文件中连接不同的记录类型。
在 FOXPRO SQL 中,默认情况下,不允许使用别名和数据文件名 混合使用。但是在实际应用中,笔者发现 FOXPRO SQL 允许使用别名和数据文件名混合使用,并且允许连接相同的记录类型——自连接。
在解决实际问题时,笔者遇到了一个问题,即 某地直销网的数据记录类型为职工编号、姓名、直销额、主管层次、主管职工号等,需要查询直销额高于其主管人直销额的职工姓名、直销额、主管人姓名及直销额。
为了解决这个问题,通常有两种方法:方法 1 是首先查询各层主管人的职工编号、姓名、直销额,存于中间数据库,然后连结职工数据库和中间数据库,查询直销额高于其主管人直销额的职工姓名、直销额、主管人姓名及直销额。方法 2 是首先将职工数据库做一个不同的拷贝,然后连结职工数据库和拷贝数据库,查询直销额高于其主管人直销额的职工姓名、直销额、主管人姓名及直销额。
但是这两种方法都有其不足之处,方法 1 的语句序列繁复,且产生中间数据库,额外占用硬盘空间,运行速度较慢。方法 2 思路清晰,但同样产生中间数据库。
因此,笔者探索进行数据库白连结,并取得成功。数据库白连结即记录类型与自身相连结。方法是对查询中的数据库起两个不同的名字,如同有两个独立的数据库,则 FOXPRO SQL 可以象连接两个不同的记录类型数据库一样,将它们随意连接。这样,白连接问题转化为用不同的数据库名来标识同一个数据库问题。
FOXPRO SQL 的别名和自连接特性可以帮助开发者更好地解决实际问题,提高开发效率和程序性能。但是,需要注意的是,在使用别名和自连接时,需要遵守 FOXPRO SQL 的语法规则和限制,避免出现错误和问题。