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 ステートメントにスキップします。