0

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)を使わないとうまくいきません

ID、役職、部署の検索でクエリが異なる if ステートメントを実装してみました。

私の問題は、より多くの列を使用する場合、使用するデータベース テーブルごとにクエリを作成する必要があることです。

これに代わるものはありますか?

編集:

これが私の現在のクエリです。

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 を追加する必要があることに注意してください。検索機能を動作させるために $col に。

私はこれを試しました

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

しかし、何らかの理由if($col == 'Department')で認識されず、else ステートメントにスキップします。

4

1 に答える 1

0

ポジション ID、ポジション、および部門名のみを含むテーブルが必要な場合は、次を使用できます。

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

これにより、ID の代わりにポジション ID、ポジション、および部署名で検索できます。

于 2012-09-17T13:18:19.750 に答える