我需要帮助才能使用此代码显示所有可用的汽车。
$query = "SELECT DISTINCT kendaraan.* FROM kendaraan
LEFT JOIN transaksi ON kendaraan.ID_Kendaraan = transaksi.ID_Kendaraan
WHERE (Tipe LIKE'%$tipemerk%' OR Merk LIKE '%$tipemerk%') AND ID_Tipe='$tipe'
AND COALESCE(transaksi.Tgl_Peminjaman NOT BETWEEN '$tglpergi' AND '$tglkembali', TRUE)
AND COALESCE(transaksi.Tgl_Pengembalian NOT BETWEEN '$tglpergi' AND '$tglkembali', TRUE)
AND COALESCE('$tglpergi' NOT BETWEEN transaksi.Tgl_Peminjaman AND transaksi.Tgl_Pengembalian, TRUE)
AND COALESCE('$tglkembali' NOT BETWEEN transaksi.Tgl_Peminjaman AND transaksi.Tgl_Pengembalian, TRUE)";
$result = mysqli_query($con,$query);
我的 transaksi 数据库(交易):( Tgl_Peminjaman
是开始日期,Tgl_Pengembalian
是结束日期)
ID_Transaksi | ID_User | ID_Kendaraan | ID_Karyawan | Tgl_Peminjaman | Tgl_Pengembalian | Tgl_Transaksi | Tgl_Kembali | Total_Biaya | Bank | Status_Pembayaran | Denda_Keterlambatan | Status | Alamat_pengiriman | Supir
TR001 | NP002 | KDR001 | | 2016-11-28 | 2016-11-28 | 2016-11-27 | 0000-00-00 | 500000 | BCA | Belum Bayar | 0 | Diproses | jl. duri kosambi no 414 jakarta barat | Tidak
TR002 | NP002 | KDR001 | | 2016-11-29 | 2016-11-29 | 2016-11-27 | 0000-00-00 | 500000 | BNI | Belum Bayar | 0 | Diproses | jl. duri kosambi no 414 jakarta barat | Tidak
我的kendaraan数据库(车辆):
ID_Kendaraan | ID_Tipe | Merk | Tipe | Tahun | CC | Warna | KM | Foto | Harga
KDR001 | MBL | Toyota | Avanza | 2016 | 1500 | Hitam | 3231 | image/KDR001.png | 500000
KDR002 | MBL | Toyota | Avanza | 2016 | 1500 | Biru | 2900 | image/AVblue.png | 450000
KDR003 | MBL | Toyota | Avanza | 2014 | 1500 | Putih | 2900 | image/AVwhite.jpg | 400000
KDR004 | MBL | Toyota | Avanza | 2014 | 1300 | Silver Metalic | 2900 | image/AVsilver.png | 400000
KDR005 | MBL | Toyota | Prius | 2014 | 1300 | White | 2900 | image/PRwhite.jpg | 300000
问题是我仍然得到具有不同价值的ID_Kendaraan
。因此,如果我使用开始日期"2016-11-28"
和结束日期" 2016-11-28
"进行搜索,则仍会显示ID_Kendaraan with id = KDR001 , Tgl_Peminjaman = 2016-11-29 , and Tgl_Pengembalian = 2016-11-29
。
我得到的输出:
ID_Kendaraan | ID_Tipe | Merk | Tipe | Tahun | CC | Warna | KM | Foto | Harga | Tgl_Peminjaman | Tgl_Pengembalian
KDR001 | MBL | Toyota | Avanza | 2016 | 1500 | Hitam | 3231 | image/KDR001.png | 500000 | 2016-11-29 | 2016-11-29
KDR002 | MBL | Toyota | Avanza | 2016 | 1500 | Biru | 2900 | image/AVblue.png | 450000 | NULL | NULL
KDR003 | MBL | Toyota | Avanza | 2014 | 1500 | Putih | 2900 | image/AVwhite.jpg | 400000 | NULL | NULL
KDR004 | MBL | Toyota | Avanza | 2014 | 1300 | Silver Metalic | 2900 | image/AVsilver.png | 400000 | NULL | NULL
KDR005 | MBL | Toyota | Prius | 2014 | 1300 | White | 2900 | image/PRwhite.jpg | 300000 | NULL | NULL
我想要的输出:
ID_Kendaraan | ID_Tipe | Merk | Tipe | Tahun | CC | Warna | KM | Foto | Harga | Tgl_Peminjaman | Tgl_Pengembalian
KDR002 | MBL | Toyota | Avanza | 2016 | 1500 | Biru | 2900 | image/AVblue.png | 450000 | NULL | NULL
KDR003 | MBL | Toyota | Avanza | 2014 | 1500 | Putih | 2900 | image/AVwhite.jpg | 400000 | NULL | NULL
KDR004 | MBL | Toyota | Avanza | 2014 | 1300 | Silver Metalic | 2900 | image/AVsilver.png | 400000 | NULL | NULL
KDR005 | MBL | Toyota | Prius | 2014 | 1300 | White | 2900 | image/PRwhite.jpg | 300000 | NULL | NULL
那么如何获得我想要的输出? 我不想展示已预订的汽车。 对不起我的英语不好,我的母语是印度尼西亚语。
答案 0 :(得分:0)
不确定您在查询中输入NOT BETWEEN
的原因。我想你应该改变这个:
AND COALESCE(transaksi.Tgl_Peminjaman NOT BETWEEN '$tglpergi' AND '$tglkembali', TRUE)
AND COALESCE(transaksi.Tgl_Pengembalian NOT BETWEEN '$tglpergi' AND '$tglkembali', TRUE)
到此:(显示已预订的汽车和交易日期为NULL的汽车)
AND (transaksi.Tgl_Peminjaman IS NOT NULL OR transaksi.Tgl_Peminjaman >= '$tglpergi')
AND (transaksi.Tgl_Pengembalian IS NOT NULL OR transaksi.Tgl_Pengembalian <= '$tglkembali')
或者:(显示交易日期为NULL的汽车)
AND transaksi.Tgl_Peminjaman IS NULL
AND transaksi.Tgl_Pengembalian IS NULL