我从我的sql生成结果时遇到了问题。那么我的sql用于搜索3个条件的数据。
- 使用交易号
- 按日期
- 交易号码和日期
醇>
到目前为止,这是我的查询: - >
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
如果我插入交易号和日期,我无法生成正确的结果。
答案 0 :(得分:1)
从逻辑上讲,你的三个条件实际上只有两个条件。如果你有:
如果#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