1

誰でもこれの何が悪いのか教えてもらえますか

$paramcariは検索する必要のある値です。これは、a.statusが0でも2でもないデータである必要がありますが、フィルターは機能しません。出力には、0、0、2のいずれの場合でも常にすべてのステータスが表示されます。私は何を取りこぼしたか?

$sql="select a.*, b.*, d.*,  e.*, f.*, j.*, k.*, DATE_FORMAT(a.tgldaftar,'%d %b %Y %H:%i') as tgldaftar,
      DATE_FORMAT(a.tglkeluar,'%d %b %Y %H:%i') as tglkeluar , i.*
      from daftar a
      INNER JOIN  pasien  b ON a.noRM=b.noRM 
      INNER JOIN  ranjang d ON a.idranjang=d.idranjang 
      INNER JOIN  ruang e ON d.idruang=e.idruang 
      INNER JOIN  kelas  j ON e.idkelas=j.idkelas 
      INNER JOIN  instalasi  k ON e.idinstalasi=k.idinstalasi
      INNER JOIN (select idjenispasien , jenispasien  from jenispasien ) f ON a.idjenispasien=f.idjenispasien 
      INNER JOIN rujukan i ON a.idrujukan=i.idrujukan and a.status !=0 and a.status != 2";

if($paramcari != ""){
    $sql.=" and b.nama like '%$paramcari%'  ";
    $sql.=" or j.namakelas like '%$paramcari%'  ";
    $sql.=" or e.namaruang like '%$paramcari%'  ";
    $sql.=" or b.idRM like '%$paramcari%'  ";
    $sql.=" or i.namars like '%$paramcari%'  ";
    $sql.=" or a.nodaftar like '%$paramcari%'  ";
}   

$sql.="ORDER BY a.tgldaftar ASC limit  $start,15   ";   
4

1 に答える 1

1

検索条件and a.status !=0 and a.status != 2は、最後の内部結合条件に追加されます。代わりにwhere状態にする必要があります。最後の結合をに変更します

INNER JOIN rujukan i ON a.idrujukan=i.idrujukan
where a.status !=0 and a.status != 2";

また、検索条件に中かっこを追加しますandor

if($paramcari != ""){
    $sql.=" and (b.nama like '%$paramcari%'  ";
    ...
    $sql.=" or a.nodaftar like '%$paramcari%') ";
}
于 2012-12-08T17:00:02.000 に答える