表如下:
员工表:emp
职务表:zw
工种表:gz
岗位表:gw
部门表:bm
单位表:dw
要求:emp表中有zw\gz\gw\bm\dw五个表的ID,作为这五个表的外键存放数据。这五个表中,每个ID都对应着一个名字,如单位名称、职务名称…………
现在要建一个视图,把emp表中的所有数据和五个表中的名字组成一个视图,现在的问题是emp表中的五个表的外键可以为空
SELECT dbo.T_HR_dw.dwName, dbo.T_HR_bm.bmName, dbo.T_HR_gz.gzName, dbo.T_HR_gw.gwName, dbo.T_HR_zw.zwName, dbo.T_HR_emp.*
FROM dbo.T_HR_emp INNER JOIN
dbo.T_HR_dw ON dbo.T_HR_emp.dwID = dbo.T_HR_dw.dwID INNER JOIN
dbo.T_HR_gw ON dbo.T_HR_emp.gwID = dbo.T_HR_gw.gwID INNER JOIN
dbo.T_HR_gz ON dbo.T_HR_emp.gzID = dbo.T_HR_gz.gzID INNER JOIN
dbo.T_HR_zw ON dbo.T_HR_emp.zwID = dbo.T_HR_zw.zwID INNER JOIN
dbo.T_HR_bm ON dbo.T_HR_emp.bmID = dbo.T_HR_bm.bmID
这样做的话,如果emp表中的一个外键的值为空则在视图中找不到这条数据。
该如何建立这个视图呢?
员工表:emp
职务表:zw
工种表:gz
岗位表:gw
部门表:bm
单位表:dw
要求:emp表中有zw\gz\gw\bm\dw五个表的ID,作为这五个表的外键存放数据。这五个表中,每个ID都对应着一个名字,如单位名称、职务名称…………
现在要建一个视图,把emp表中的所有数据和五个表中的名字组成一个视图,现在的问题是emp表中的五个表的外键可以为空
SELECT dbo.T_HR_dw.dwName, dbo.T_HR_bm.bmName, dbo.T_HR_gz.gzName, dbo.T_HR_gw.gwName, dbo.T_HR_zw.zwName, dbo.T_HR_emp.*
FROM dbo.T_HR_emp INNER JOIN
dbo.T_HR_dw ON dbo.T_HR_emp.dwID = dbo.T_HR_dw.dwID INNER JOIN
dbo.T_HR_gw ON dbo.T_HR_emp.gwID = dbo.T_HR_gw.gwID INNER JOIN
dbo.T_HR_gz ON dbo.T_HR_emp.gzID = dbo.T_HR_gz.gzID INNER JOIN
dbo.T_HR_zw ON dbo.T_HR_emp.zwID = dbo.T_HR_zw.zwID INNER JOIN
dbo.T_HR_bm ON dbo.T_HR_emp.bmID = dbo.T_HR_bm.bmID
这样做的话,如果emp表中的一个外键的值为空则在视图中找不到这条数据。
该如何建立这个视图呢?
SELECT dbo.T_HR_dw.dwName, dbo.T_HR_bm.bmName, dbo.T_HR_gz.gzName, dbo.T_HR_gw.gwName, dbo.T_HR_zw.zwName, dbo.T_HR_emp.*
FROM dbo.T_HR_emp
left JOIN dbo.T_HR_dw ON dbo.T_HR_emp.dwID = dbo.T_HR_dw.dwID
left JOIN dbo.T_HR_gw ON dbo.T_HR_emp.gwID = dbo.T_HR_gw.gwID
left JOIN dbo.T_HR_gz ON dbo.T_HR_emp.gzID = dbo.T_HR_gz.gzID
left JOIN dbo.T_HR_zw ON dbo.T_HR_emp.zwID = dbo.T_HR_zw.zwID
left JOIN dbo.T_HR_bm ON dbo.T_HR_emp.bmID = dbo.T_HR_bm.bmID--2.如果想为空的字段显示0,''之类的,用isnull,大致为:
SELECT isnull(dbo.T_HR_dw.dwName,'') dwName, dbo.T_HR_bm.bmName, dbo.T_HR_gz.gzName, dbo.T_HR_gw.gwName, dbo.T_HR_zw.zwName, dbo.T_HR_emp.*
FROM dbo.T_HR_emp
left JOIN dbo.T_HR_dw ON dbo.T_HR_emp.dwID = dbo.T_HR_dw.dwID
left JOIN dbo.T_HR_gw ON dbo.T_HR_emp.gwID = dbo.T_HR_gw.gwID
left JOIN dbo.T_HR_gz ON dbo.T_HR_emp.gzID = dbo.T_HR_gz.gzID
left JOIN dbo.T_HR_zw ON dbo.T_HR_emp.zwID = dbo.T_HR_zw.zwID
left JOIN dbo.T_HR_bm ON dbo.T_HR_emp.bmID = dbo.T_HR_bm.bmID
我说的为空是指emp表中的为空