SQL 3条件类型

时间:2014-07-28 16:14:21

标签: php sql

我从我的sql生成结果时遇到了问题。那么我的sql用于搜索3个条件的数据。

  
      
  1. 使用交易号
  2.   
  3. 按日期
  4.   
  5. 交易号码和日期
  6.   

到目前为止,这是我的查询: - >

select a.totalpembelian,a.idpembelian,notransaksibeli,a.tanggal,c.namabarang,b.totalbarang,c.hargabarang,b.totalharga,d.namasupplier from pembelian_header a 
join pembelian_detail b on 
    a.idpembelian = b.idpembelian left join 
    barang c on b.idbarang = c.idbarang left join supplier d on b.idsupplier=d.idsupplier 
    where (notransaksibeli like '%$notrans%' and a.tanggal='$tanggal')
    or (notransaksibeli like '%$notrans%') or (a.tanggal='$tanggal')
group by totalpembelian

如果我插入交易号和日期,我无法生成正确的结果。

2 个答案:

答案 0 :(得分:1)

从逻辑上讲,你的三个条件实际上只有两个条件。如果你有:

  1. A或
  2. B或
  3. A和B
  4. 如果#1或#2为真,则#3将始终为真。所以你可以在那里简化你的查询。 但我担心这只是一个部分答案,因为我不知道你的实际数据或你得到的结果。但是,您可能会发现简化查询有助于了解它实际执行的操作。

答案 1 :(得分:0)

由于您在两者上都匹配,但想要在两者都匹配的情况下给出优先选择,您需要您的标准要求填充两个变量,或者只填充其中一个,您可以通过{{ 1}}或= ''取决于未设置变量的设置方式:

IS NULL

或者:

    where (notransaksibeli like '%$notrans%' and a.tanggal='$tanggal')
    or (notransaksibeli like '%$notrans%' AND $tanggal = '') 
    or (a.tanggal='$tanggal' AND $notrans = '')
group by totalpembelian