jqGrid:如何对已加入的查询使用单一搜索?

时间:2012-09-17 13:10:53

标签: php jquery mysql jqgrid

我使用jQgrid中的Position表作为我的主要数据源。

Department

id | department
1  | field
2  | IT
3  | Marketing

Position

id | position    | department
5  | interviewee | 1
9  | advertiser  | 3
8  | developer   | 2

当我搜索ID&位置,我得到结果,但是当我搜索部门时,除非我使用ID(1,2,3)否则它将无法工作

我已经尝试实现if语句,其中搜索ID,位置和部门有不同的查询。

我的问题是如果我使用更多列,那么我将不得不为我使用的每个数据库表创建查询。

有替代方案吗?

编辑:

这是我当前的查询。

SELECT p.id AS id, p.position AS position, d.department AS department FROM position p LEFT JOIN department d ON p.department = d.id " . $where ." ORDER BY $sidx $sord LIMIT $start , $limit

$where变量是通过......

获得的
function getWhereClause($col, $oper, $val){
    global $ops;
    if($oper == 'bw' || $oper == 'bn') $val .= '%';
    if($oper == 'ew' || $oper == 'en' ) $val = '%'.$val;
    if($oper == 'cn' || $oper == 'nc' || $oper == 'in' || $oper == 'ni') $val = '%'.$val.'%';
    return " WHERE p.$col {$ops[$oper]} '$val' ";
}

...请注意我必须添加p。 to $ col使搜索功能起作用。

我试过这个

if($col == 'Department'){
    return " WHERE d.$col {$ops[$oper]} '$val' ";
    }
    else{
    return " WHERE p.$col {$ops[$oper]} '$val' ";
    }

但由于某种原因if($col == 'Department')未被识别并跳过else语句。

1 个答案:

答案 0 :(得分:0)

如果您想要一张只有位置ID,职位和部门名称的表格,您可以使用:

SELECT position.id, position.position, department.department
FROM Position 
INNER JOIN department on position.department = department.id

这样您就可以在位置ID,位置和部门名称而不是ID上搜索它。