c# sql 数据库 多表关联 根据一个表的字段 读取另一个表的内容

c# sql 数据库 多表关联 根据一个表的字段 读取另一个表的内容

数据库中有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表中的内容被删除后,主表就会出错,这个在程序中一定要进行判断。 

nathanma

leave a comment

Create Account



Log In Your Account