查询以获取雇员的姓名以及所有雇员的项目名称。注意:没有专案的员工应输入文字“找不到专案”
这是两个表:
function showexpiry(){
var ctx = SP.ClientContext.get_current();
var web = ctx.get_web();
var list = web.get_lists().getById(_spPageContextInfo.pageListId);
var item = list.getItemById(_spPageContextInfo.pageItemId);
ctx.load(list);
ctx.load(item);
ctx.executeQueryAsync(
function(){
var expirydate = item.get_item('ExpireDate');
alert("expirydate = "+ expirydate);
var modifieddate = item.get_item('Modified');
alert("modifieddate = "+ modifieddate);
var currentdate = new Date();
alert("currentdate = "+currentdate);
var tempdate = new Date();
tempdate.setDate(tempdate.getDate() + 1);
//alert(tempdate);
expirydate.setDate(expirydate.getDate() + 1);
var expiredperiod = expirydate;
alert("expired period = " + expiredperiod );
if (expirydate != null && modifieddate < expirydate && currentdate > expiredperiod )
{
statusDesc2 = SP.UI.Status.addStatus("Warning, this page has expired and exceed the expired period of 1 day");
SP.UI.Status.setStatusPriColor(statusDesc2, 'red');
}
}
, function(err){
alert(err);
});
}
function showexpiry(){
var ctx = SP.ClientContext.get_current();
var web = ctx.get_web();
var list = web.get_lists().getById(_spPageContextInfo.pageListId);
var item = list.getItemById(_spPageContextInfo.pageItemId);
ctx.load(list);
ctx.load(item);
ctx.executeQueryAsync(
function(){
var expirydate = item.get_item('ExpireDate');
var expirydate2 = item.get_item('ExpireDate');
alert("expirydate = "+ expirydate);
var modifieddate = item.get_item('Modified');
alert("modifieddate = "+ modifieddate);
var currentdate = new Date();
alert("currentdate = "+currentdate);
var tempdate = new Date();
tempdate.setDate(tempdate.getDate() + 1);
//alert(tempdate);
expirydate2.setDate(expirydate2.getDate() + 1);
var expiredperiod = expirydate2;
alert("expired period = " + expiredperiod );
if (expirydate != null && modifieddate < expirydate && currentdate > expiredperiod )
{
statusDesc2 = SP.UI.Status.addStatus("Warning, this page has expired and exceed the expired period of 1 day");
SP.UI.Status.setStatusPriColor(statusDesc2, 'red');
}
我使用以下查询来获取他们工作的员工姓名和项目名称。
Table1: EmployeeID, FirstName
1 Vikas
2 nikita
3 Ashish
4 Nikhil
5 anish
我不知道如何为不在任何项目中工作的员工打印消息。
答案 0 :(得分:1)
您可以使用(left) outer join来包含表1中没有匹配记录的表1中的记录;然后使用nvl()
或coalesce()
为不匹配的行中的空项目名称值提供一个固定值:
select FirstName, coalesce(ProjectName, 'Project not found') as ProjectName
from table1 t1
left join table2 t2 on t2.EmployeeDetailID = t1.EmployeeID;
FIRSTNAME PROJECTNAME
---------- -----------------
Vikas Task Track
Vikas CLP
Vikas Survey Managment
nikita HR Managment
Ashish Task Track
Ashish GRS
Ashish DDS
Nikhil HR Managment
anish Project not found
您可以 将老式语法与带有逗号分隔的表名以及where
子句中的联接条件一起使用,但是最好使用ANSI联接语法。而且对于外部联接而言,这样做要容易得多,而不是Oracle难以掌握的(+)
机制。
答案 1 :(得分:0)
在这种情况下,您可以使用左外部联接和NVL()函数。作为示例,请找到以下查询。
SELECT e.firstname,NVL(d.deptname, 'NO DEPT FOUND')
FROM employee E
LEFT OUTER JOIN department D ON e.deptno = d.deptno;