如果在表中找不到数据,则打印一条消息

时间:2019-06-12 22:38:56

标签: sql oracle

查询以获取雇员的姓名以及所有雇员的项目名称。注意:没有专案的员工应输入文字“找不到专案”

这是两个表:

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

我不知道如何为不在任何项目中工作的员工打印消息。

2 个答案:

答案 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;