首页 > 解决方案 > 动态返回一列值等于另一列值的所有 SQL 结果

问题描述

我有一个搜索表格,可以通过表格查找员工。我只希望在搜索中返回与 SupEmp 匹配的员工。进行搜索的人有一个 EmployeeNumber。当您登录搜索表单时,该员工编号会动态导入。如果您的EmployeeNumber与其他SupEmp 编号匹配,则显示与您的 EmployeeNumber 匹配的所有行。

目前我的代码只返回所有员工。修改后的代码应该只显示 SupEmp 与您的 EmployeeNumber 匹配的员工。

var vendorCols = "SupEmp, FIRST_NAME, LAST_NAME, EmployeeNumber, DEPARTMENT, Position, Status";

       $('#EmployeeLookup').autocomplete({
           source: function (request, response) {
               var sql = "SELECT " + vendorCols + " FROM EMPLOYEE_SEARCH"
                   + " WHERE UPPER(FIRST_NAME + LAST_NAME) like '%" + request.term.toUpperCase() + "%'";

               $.ajax({
                   url: '/public/GetData',
                   type: 'POST',
                   data: JSON.stringify({ query: sql, connectionName: "LawsonConnection" }),
                   contentType: "application/json; charset=utf-8",
                   dataType: 'json',
                   success: function (dataArray) {
                       response($.map(dataArray, function (item) {
                           if (request.term.indexOf("'") >= 0) { item = 'Do not enter special characters' }
                           if (item === "Data Not Found")
                               item = "Employee Cannot Be Found";
                           return {
                               label: item
                           };
                       }));
                   }
               });
           },

标签: jquerysqldynamic

解决方案


您的问题有很多空白,但据我了解,您需要在查询中添加一个 AND 子句,并考虑到您有一个列表SupEmp numbers,它应该类似于:

+ " WHERE UPPER(FIRST_NAME + LAST_NAME) like '%" + request.term.toUpperCase() + "%'"
+ " AND EmployeeNumber IN (" +request.SupEmpNumbers,.join(', ') + ")" ;

推荐阅读