数据库中有3个表,分别是:
1. Person
字段为: ID;NAME;JOBID;CLASSID
1 李明 1 1
2 张三 2 2
3 李四 2 1
4 王五 3 2
5 赵六 1 1
2. Job
字段为:ID;JOBNAME
1 工程师
2 财务师
3 预算师
3. Class
字段为:ID;CLASSNAME
1 分组1
2 分组2
3 分组3
目前想将Person表的所有内容存入DATASET的TABLE中,但希望根据JOBID和CLASSID获取其他2个表的内容后,将其相对应的内容写入,并且分别建立别名。那么SQL语句要如何写呢?看下面
string str = “select top 100 Person.ID as 序号,JOBNAME as 工作职务,CLASSNAME as 分组信息 from Person,Job,Class where Person.JOBID = Job.ID and Person.CLASSID = Class.ID order by Person.ID desc”;
分析一下以上的代码,首先在top 100后面的就是要选择的字段名,这里要注意,ID这个字段名是3个表都有的,所以必须要以表名.字段名的形式表现,也就是Person.ID,来表示Person表中的这个ID,如果不标明,sql语句会出错。接下来,后面这个JOBNAME就是表Job中的字段名,而不是Person表中的那个JOBID的内容,同理,CLASSNAME也是表Class中的。因为这些是我们要真正取出来的内容。
from是从哪些表中取出以上这些值,这里就牵扯到了3个表,把这3个表用“,”分割开。
where 来判断多表之间的关系,也就是主键和外键的关联。
最后是按照Person.ID的值进行倒序排列,正序则是asc。
当一条SQL语句出错的时候,也要注意是否该空格的地方空格了。
最后,要特别注意的是,如果没有建立物理主键外键关联,那么当Job表或者Class表中的内容被删除后,主表就会出错,这个在程序中一定要进行判断。
暂无评论内容